diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
--- a/.gitattributes
+++ /dev/null
@@ -1,1 +0,0 @@
-debian/changelog merge=dpkg-mergechangelogs
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
--- a/.gitignore
+++ /dev/null
@@ -1,22 +0,0 @@
-tags
-Build/SysConfig.hs
-Setup
-github-backup
-gitriddance
-
-dist
-cabal-dev
-*.o
-*.hi
-*.chi
-*.chs.h
-*.dyn_o
-*.dyn_hi
-.hpc
-.hsenv
-.cabal-sandbox/
-cabal.sandbox.config
-*.prof
-*.aux
-*.hp
-.stack-work/
diff --git a/Build/Version.hs b/Build/Version.hs
--- a/Build/Version.hs
+++ b/Build/Version.hs
@@ -46,7 +46,7 @@
 	
 getChangelogVersion :: IO Version
 getChangelogVersion = do
-	changelog <- readFile "debian/changelog"
+	changelog <- readFile "CHANGELOG"
 	let verline = takeWhile (/= '\n') changelog
 	return $ middle (words verline !! 1)
   where
diff --git a/Build/make-sdist.sh b/Build/make-sdist.sh
deleted file mode 100644
--- a/Build/make-sdist.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-#
-# Workaround for `cabal sdist` requiring all included files to be listed
-# in .cabal.
-
-# Create target directory
-sdist_dir=github-backup-$(grep '^Version:' github-backup.cabal | sed -re 's/Version: *//')
-mkdir --parents dist/$sdist_dir
-
-find . \( -name .git -or -name dist -or -name cabal-dev \) -prune \
-	-or -not -name \\*.orig -not -type d -print \
-| perl -ne "print unless length >= 100 - length q{$sdist_dir}" \
-| xargs cp --parents --target-directory dist/$sdist_dir
-
-cd dist
-tar --format=ustar -caf $sdist_dir.tar.gz $sdist_dir
-
-# Check that tarball can be unpacked by cabal.
-# It's picky about tar longlinks etc.
-rm -rf $sdist_dir
-cabal unpack $sdist_dir.tar.gz
diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,17 @@
+github-backup (1.20160922) unstable; urgency=medium
+
+  * Increase base bounds to 4.8 to get mapM_ etc that works on Vector.
+  * Recommended build method is now to use stack, for more reliable builds.
+  * Explicitly list modules and other files in github-backup.cabal.
+  * The hackage .tar.gz now omits the debian directory and may omit other
+    source files in the future; the purpose of that tarball is to make
+    stack/cabal install work, not to be a complete source distribution.
+    Use git repository to get complete source.
+  * Various updates to internal git and utility libraries shared
+    with git-annex.
+
+ -- Joey Hess <id@joeyh.name>  Mon, 22 Aug 2016 23:57:16 -0400
+
 github-backup (1.20160522) unstable; urgency=medium
 
   * Work around git weirdness in handling of relative path to GIT_INDEX_FILE
diff --git a/COPYRIGHT b/COPYRIGHT
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -2,14 +2,14 @@
 Source: native package
 
 Files: *
-Copyright: © 2010-2014 Joey Hess <joey@kitenet.net>
+Copyright: © 2010-2014 Joey Hess <id@joeyh.name>
 License: GPL-3+
  The full text of version 3 of the GPL is distributed as doc/GPL in
  this package's source, or in /usr/share/common-licenses/GPL-3 on
  Debian systems.
 
 Files: Utility/*
-Copyright: 2012-2014 Joey Hess <joey@kitenet.net>
+Copyright: 2012-2014 Joey Hess <id@joeyh.name>
 License: BSD-2-clause
 
 License: BSD-2-clause
diff --git a/Git/Branch.hs b/Git/Branch.hs
--- a/Git/Branch.hs
+++ b/Git/Branch.hs
@@ -13,6 +13,7 @@
 import Git
 import Git.Sha
 import Git.Command
+import qualified Git.Config
 import qualified Git.Ref
 import qualified Git.BuildVersion
 
@@ -114,19 +115,33 @@
 			(False, True) -> findbest c rs -- worse
 			(False, False) -> findbest c rs -- same
 
-{- The user may have set commit.gpgsign, indending all their manual
+{- The user may have set commit.gpgsign, intending all their manual
  - commits to be signed. But signing automatic/background commits could
  - easily lead to unwanted gpg prompts or failures.
  -}
 data CommitMode = ManualCommit | AutomaticCommit
 	deriving (Eq)
 
+{- Prevent signing automatic commits. -}
 applyCommitMode :: CommitMode -> [CommandParam] -> [CommandParam]
 applyCommitMode commitmode ps
 	| commitmode == AutomaticCommit && not (Git.BuildVersion.older "2.0.0") =
 		Param "--no-gpg-sign" : ps
 	| otherwise = ps
 
+{- Some versions of git commit-tree honor commit.gpgsign themselves,
+ - but others need -S to be passed to enable gpg signing of manual commits. -}
+applyCommitModeForCommitTree :: CommitMode -> [CommandParam] -> Repo -> [CommandParam]
+applyCommitModeForCommitTree commitmode ps r
+	| commitmode == ManualCommit =
+		case (Git.Config.getMaybe "commit.gpgsign" r) of
+			Just s | Git.Config.isTrue s == Just True ->
+				Param "-S":ps
+			_ -> ps'
+	| otherwise = ps'
+  where
+	ps' = applyCommitMode commitmode ps
+
 {- Commit via the usual git command. -}
 commitCommand :: CommitMode -> [CommandParam] -> Repo -> IO Bool
 commitCommand = commitCommand' runBool
@@ -172,9 +187,9 @@
 		pipeWriteRead ([Param "commit-tree", Param (fromRef tree)] ++ ps)
 			sendmsg repo
   where
-	ps = applyCommitMode commitmode $
-		map Param $ concatMap (\r -> ["-p", fromRef r]) parentrefs
 	sendmsg = Just $ flip hPutStr message
+	ps = applyCommitModeForCommitTree commitmode parentparams repo
+	parentparams = map Param $ concatMap (\r -> ["-p", fromRef r]) parentrefs
 
 {- A leading + makes git-push force pushing a branch. -}
 forcePush :: String -> String
diff --git a/Git/FilePath.hs b/Git/FilePath.hs
--- a/Git/FilePath.hs
+++ b/Git/FilePath.hs
@@ -14,6 +14,8 @@
 
 module Git.FilePath (
 	TopFilePath,
+	BranchFilePath(..),
+	descBranchFilePath,
 	getTopFilePath,
 	fromTopFilePath,
 	toTopFilePath,
@@ -32,6 +34,13 @@
 {- A FilePath, relative to the top of the git repository. -}
 newtype TopFilePath = TopFilePath { getTopFilePath :: FilePath }
 	deriving (Show, Eq, Ord)
+
+{- A file in a branch or other treeish. -}
+data BranchFilePath = BranchFilePath Ref TopFilePath
+
+{- Git uses the branch:file form to refer to a BranchFilePath -}
+descBranchFilePath :: BranchFilePath -> String
+descBranchFilePath (BranchFilePath b f) = fromRef b ++ ':' : getTopFilePath f
 
 {- Path to a TopFilePath, within the provided git repo. -}
 fromTopFilePath :: TopFilePath -> Git.Repo -> FilePath
diff --git a/Git/HashObject.hs b/Git/HashObject.hs
--- a/Git/HashObject.hs
+++ b/Git/HashObject.hs
@@ -5,6 +5,8 @@
  - Licensed under the GNU GPL version 3 or higher.
  -}
 
+{-# LANGUAGE CPP #-}
+
 module Git.HashObject where
 
 import Common
@@ -39,6 +41,10 @@
  - interface does not allow batch hashing without using temp files. -}
 hashBlob :: HashObjectHandle -> String -> IO Sha
 hashBlob h s = withTmpFile "hash" $ \tmp tmph -> do
+	fileEncoding tmph
+#ifdef mingw32_HOST_OS
+	hSetNewlineMode tmph noNewlineTranslation
+#endif
 	hPutStr tmph s
 	hClose tmph
 	hashFile h tmp
diff --git a/Git/Queue.hs b/Git/Queue.hs
--- a/Git/Queue.hs
+++ b/Git/Queue.hs
@@ -163,7 +163,7 @@
 		hPutStr h $ intercalate "\0" $ toCommand $ getFiles action
 		hClose h
 #else
-	-- Using xargs on Windows is problimatic, so just run the command
+	-- Using xargs on Windows is problematic, so just run the command
 	-- once per file (not as efficient.)
 	if null (getFiles action)
 		then void $ boolSystemEnv "git" gitparams (gitEnv repo)
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -26,7 +26,7 @@
 
 # Upload to hackage.
 hackage: clean
-	./Build/make-sdist.sh
+	@cabal sdist
 	@cabal upload dist/*.tar.gz
 
 # hothasktags chokes on some template haskell etc, so ignore errors
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -5,10 +5,19 @@
 
 ## Installation
 
-    cabal install github-backup --bindir=$HOME/bin
+First install Haskell's [stack](http://haskellstack.org/) tool.
+For example, on a Debian system:
 
-(Cabal is bundled with the [Haskell Platform](http://www.haskell.org/platform/).)
+	sudo apt-get install haskell-stack
 
+Then to build and install github-backup:
+
+	stack install github-backup
+
+There is also a Makefile, which uses cabal to build, and installs
+a man page, bash completion file, etc. This is recommended for use when
+making packages of github-backup.
+
 ## Use
 
   Run `github-backup` with no parameters, inside a git repository cloned
@@ -82,14 +91,9 @@
 Anyway, github-backup *does* do an incremental backup, picking up where it
 left off, so will complete the backup eventually even if it's rate limited.
 
-## Contributing
-
-Besides the cabal instalation you can also use [stack](https://www.stackage.org) to build from sources.
-Once you have stack installed just type ```stack build``` in the repo root directory.
-
 ## Author
 
-github-backup was written by Joey Hess <joey@kitenet.net>
+github-backup was written by Joey Hess <id@joeyh.name>
 
 It is made possible thanks to:
 
diff --git a/Utility/Directory.hs b/Utility/Directory.hs
--- a/Utility/Directory.hs
+++ b/Utility/Directory.hs
@@ -6,15 +6,14 @@
  -}
 
 {-# LANGUAGE CPP #-}
-{-# OPTIONS_GHC -fno-warn-tabs -w #-}
+{-# OPTIONS_GHC -fno-warn-tabs #-}
 
 module Utility.Directory (
 	module Utility.Directory,
-	module System.Directory
+	module Utility.SystemDirectory
 ) where
 
 import System.IO.Error
-import System.Directory hiding (isSymbolicLink)
 import Control.Monad
 import System.FilePath
 import Control.Applicative
@@ -31,6 +30,7 @@
 import Control.Monad.IfElse
 #endif
 
+import Utility.SystemDirectory
 import Utility.PosixFiles
 import Utility.Tmp
 import Utility.Exception
diff --git a/Utility/Exception.hs b/Utility/Exception.hs
--- a/Utility/Exception.hs
+++ b/Utility/Exception.hs
@@ -5,7 +5,7 @@
  - License: BSD-2-clause
  -}
 
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE CPP, ScopedTypeVariables #-}
 {-# OPTIONS_GHC -fno-warn-tabs #-}
 
 module Utility.Exception (
@@ -28,6 +28,11 @@
 import Control.Monad.Catch as X hiding (Handler)
 import qualified Control.Monad.Catch as M
 import Control.Exception (IOException, AsyncException)
+#ifdef MIN_VERSION_GLASGOW_HASKELL
+#if MIN_VERSION_GLASGOW_HASKELL(7,10,0,0)
+import Control.Exception (SomeAsyncException)
+#endif
+#endif
 import Control.Monad
 import Control.Monad.IO.Class (liftIO, MonadIO)
 import System.IO.Error (isDoesNotExistError, ioeGetErrorType)
@@ -74,6 +79,11 @@
 catchNonAsync :: MonadCatch m => m a -> (SomeException -> m a) -> m a
 catchNonAsync a onerr = a `catches`
 	[ M.Handler (\ (e :: AsyncException) -> throwM e)
+#ifdef MIN_VERSION_GLASGOW_HASKELL
+#if MIN_VERSION_GLASGOW_HASKELL(7,10,0,0)
+	, M.Handler (\ (e :: SomeAsyncException) -> throwM e)
+#endif
+#endif
 	, M.Handler (\ (e :: SomeException) -> onerr e)
 	]
 
diff --git a/Utility/SystemDirectory.hs b/Utility/SystemDirectory.hs
new file mode 100644
--- /dev/null
+++ b/Utility/SystemDirectory.hs
@@ -0,0 +1,16 @@
+{- System.Directory without its conflicting isSymbolicLink
+ -
+ - Copyright 2016 Joey Hess <id@joeyh.name>
+ -
+ - License: BSD-2-clause
+ -}
+
+-- Disable warnings because only some versions of System.Directory export
+-- isSymbolicLink.
+{-# OPTIONS_GHC -fno-warn-tabs -w #-}
+
+module Utility.SystemDirectory (
+	module System.Directory
+) where
+
+import System.Directory hiding (isSymbolicLink)
diff --git a/Utility/UserInfo.hs b/Utility/UserInfo.hs
--- a/Utility/UserInfo.hs
+++ b/Utility/UserInfo.hs
@@ -15,6 +15,7 @@
 ) where
 
 import Utility.Env
+import Utility.Data
 
 import System.PosixCompat
 import Control.Applicative
@@ -24,7 +25,7 @@
  -
  - getpwent will fail on LDAP or NIS, so use HOME if set. -}
 myHomeDir :: IO FilePath
-myHomeDir = myVal env homeDirectory
+myHomeDir = either error return =<< myVal env homeDirectory
   where
 #ifndef mingw32_HOST_OS
 	env = ["HOME"]
@@ -33,7 +34,7 @@
 #endif
 
 {- Current user's user name. -}
-myUserName :: IO String
+myUserName :: IO (Either String String)
 myUserName = myVal env userName
   where
 #ifndef mingw32_HOST_OS
@@ -47,15 +48,15 @@
 #if defined(__ANDROID__) || defined(mingw32_HOST_OS)
 myUserGecos = return Nothing
 #else
-myUserGecos = Just <$> myVal [] userGecos
+myUserGecos = eitherToMaybe <$> myVal [] userGecos
 #endif
 
-myVal :: [String] -> (UserEntry -> String) -> IO String
+myVal :: [String] -> (UserEntry -> String) -> IO (Either String String)
 myVal envvars extract = go envvars
   where
 #ifndef mingw32_HOST_OS
-	go [] = extract <$> (getUserEntryForID =<< getEffectiveUserID)
+	go [] = Right . extract <$> (getUserEntryForID =<< getEffectiveUserID)
 #else
-	go [] = extract <$> error ("environment not set: " ++ show envvars)
+	go [] = return $ Left ("environment not set: " ++ show envvars)
 #endif
-	go (v:vs) = maybe (go vs) return =<< getEnv v
+	go (v:vs) = maybe (go vs) (return . Right) =<< getEnv v
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
--- a/debian/changelog
+++ /dev/null
@@ -1,256 +0,0 @@
-github-backup (1.20160522) unstable; urgency=medium
-
-  * Work around git weirdness in handling of relative path to GIT_INDEX_FILE
-    when in a subdirectory of the repository.
-  * Various updates to internal git and utility libraries shared
-    with git-annex.
-  * debian: Add lintian overrides for rpath.
-  * debian: Bump standards-version.
-  * Makefile: Pass LDFLAGS, CFLAGS, and CPPFLAGS through ghc and on to 
-    ld, cc, and cpp. This lets the Debian package build with various
-    hardening options. Although their benefit to a largely haskell program
-    is unknown.
-
- -- Joey Hess <id@joeyh.name>  Sun, 22 May 2016 15:24:04 -0400
-
-github-backup (1.20160511) unstable; urgency=medium
-
-  * Fix build with directory-1.2.6.2.
-  * github-backup.cabal: Add Setup-Depends.
-
- -- Joey Hess <id@joeyh.name>  Wed, 11 May 2016 13:12:12 -0400
-
-github-backup (1.20160319) unstable; urgency=medium
-
-  * Update to github-0.14.1.
-    Building with old versions is not supported due to the massive API
-    changes in this version of the github library.
-  * Added support for oath tokens.
-
- -- Joey Hess <id@joeyh.name>  Sat, 19 Mar 2016 14:11:55 -0400
-
-github-backup (1.20160207) unstable; urgency=medium
-
-  * Switch to using https instead of git:// for a secure transport.
-    Note that existing git:// remotes will continue to be used.
-    Thanks, Robin Schneider.
-  * Add upper bound on github dependency, as version 0.14 has large API
-    changes and can't be used yet.
-  * Various updates to internal git and utility libraries shared
-    with git-annex.
-  * Silence build warnings with ghc 7.10.
-
- -- Joey Hess <id@joeyh.name>  Sun, 07 Feb 2016 23:29:59 -0400
-
-github-backup (1.20150807) unstable; urgency=medium
-
-  * Added bash completion.
-  * Add --no-forks flag that turns off backing up forks.
-    Thanks, Phil Ruffwind.
-  * Avoid nonzero exit due to temporary failures that can be retried next
-    time github-backup runs, so that it can be used in a cron job with eg,
-    chronic.
-
- -- Joey Hess <id@joeyh.name>  Fri, 07 Aug 2015 12:50:02 -0400
-
-github-backup (1.20150618) unstable; urgency=medium
-
-  * Fix broken configure script.
-
- -- Joey Hess <id@joeyh.name>  Thu, 18 Jun 2015 16:56:41 -0400
-
-github-backup (1.20150617) unstable; urgency=medium
-
-  * Add missing build deps for windows to cabal file.
-    Thanks, Jeff Segal.
-  * Various updates to internal git and utility libraries shared
-    with git-annex.
-
- -- Joey Hess <id@joeyh.name>  Wed, 17 Jun 2015 14:44:14 -0400
-
-github-backup (1.20150106) unstable; urgency=medium
-
-  * Fix build with process 1.2.1.0.
-  * Various updates to internal git and utility libraries shared
-    with git-annex.
-
- -- Joey Hess <id@joeyh.name>  Tue, 06 Jan 2015 19:08:08 -0400
-
-github-backup (1.20141222) unstable; urgency=medium
-
-  * Added gitriddance(1), a utility to close all issues and pull requests,
-    for repos that don't want to be bothered with GitHub's proprietary
-    issue tracker.
-  * gitriddance depends on github 0.13.1, which has bug fixes
-    for posting comments.
-  * Various updates to internal git and utility libraries shared
-    with git-annex.
-
- -- Joey Hess <id@joeyh.name>  Mon, 22 Dec 2014 15:30:08 -0400
-
-github-backup (1.20141204.1) unstable; urgency=medium
-
-  * Set myself as maintainer.
-
- -- James McCoy <jamessan@debian.org>  Fri, 19 Jun 2015 21:32:18 -0400
-
-github-backup (1.20141204) unstable; urgency=high
-
-  * Fix broken argument parser for the username|organization parameter.
-    Closes: #772043
-
- -- Joey Hess <id@joeyh.name>  Thu, 04 Dec 2014 12:29:06 -0400
-
-github-backup (1.20141110) unstable; urgency=medium
-
-  * Orphaned the Debian package.
-    (I continue to maintain github-backup upstream.)
-
- -- Joey Hess <joeyh@debian.org>  Mon, 10 Nov 2014 12:19:59 -0400
-
-github-backup (1.20141031) unstable; urgency=medium
-
-  * Adjust cabal file for network-uri split.
-  * Avoid using optparse-applicate's argument combinator, so it will build
-    with 0.11 and older too.
-  * Various updates to internal git and utility libraries shared with
-    git-annex.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 31 Oct 2014 11:17:49 -0400
-
-github-backup (1.20140831) unstable; urgency=medium
-
-  * Fix build with github 0.10.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 31 Aug 2014 15:31:26 -0700
-
-github-backup (1.20140807) unstable; urgency=medium
-
-  * Fix build with github 0.9.
-  * Fix creation of github branch.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 07 Aug 2014 22:17:22 -0400
-
-github-backup (1.20140721) unstable; urgency=medium
-
-  * Fix typo in fix for url parsing. Closes: #755261
-
- -- Joey Hess <joeyh@debian.org>  Mon, 21 Jul 2014 13:10:49 -0400
-
-github-backup (1.20140720) unstable; urgency=medium
-
-  * Deal with trailing slashes on github repo urls. Closes: #755261
-  * Fix bug introduced by change to embedded git libraries
-    in last release. Closes: #755262
-
- -- Joey Hess <joeyh@debian.org>  Sun, 20 Jul 2014 17:20:26 -0400
-
-github-backup (1.20140707) unstable; urgency=medium
-
-  * Add --exclude to skip backing up a specific repository
-    when backing up a user or organization's repositories.
-    Closes: #754072
-  * Converted to using optparse-applicative.
-  * Multiple usernames can now be specified to back up at once.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 07 Jul 2014 23:01:03 -0400
-
-github-backup (1.20140704) unstable; urgency=medium
-
-  * Avoid making signed commits when committing to the github-backup branch
-    and the user has commit.gpgsign=true.
-    Closes: #753720
-  * Various updates to internal git and utility libraries shared with git-annex.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 04 Jul 2014 12:01:11 -0400
-
-github-backup (1.20131203) unstable; urgency=low
-
-  * Now also backs up the repos a user has starred, when run with a user's
-    name.
-  * Now finds and backs up the parent repository that a repository got forked
-    from.
-  * Uses authentication for all API calls.
-  * Fairer ordering of requests when backing up many repositories at once.
-  * Avoid making requests for data that has already been backed up until
-    after new data has been backed up. Handles API rate limiting much better.
-    Closes: #723859
-
- -- Joey Hess <joeyh@debian.org>  Tue, 03 Dec 2013 12:45:18 -0400
-
-github-backup (1.20131101) unstable; urgency=low
-
-  * Now also backs up the repos a user is watching, when run with a user's
-    name. Useful if you want to back up repositories that you have not forked;
-    just watch them and run github-backup.
-  * Can now log in to github, to avoid increasingly small API rate limits.
-    Set GITHUB_USER and GITHUB_PASSWORD environment to enable.
-    Note that a few api calls don't use authentication; see
-    https://github.com/fpco/github/issues/40
-  * Build-Depend on git. Closes: #728481
-  * Don't include tmp directory in files stored in the github branch.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 01 Nov 2013 18:00:16 -0400
-
-github-backup (1.20131006) unstable; urgency=low
-
-  * Ported to Windows.
-  * Improve error message when it fails to query github for repositories
-    belonging to a user. Closes: #705084
-  * Various updates to internal git and utility libraries shared with git-annex.
-  * Makefile now uses cabal to build.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 06 Oct 2013 18:04:56 -0400
-
-github-backup (1.20130622) unstable; urgency=low
-
-  * Add missing unix-compat build dependency. Closes: #713279
-
- -- Joey Hess <joeyh@debian.org>  Sat, 22 Jun 2013 13:08:57 -0400
-
-github-backup (1.20130618) unstable; urgency=low
-
-  * Much better creation and committing to the github branch. 
-
- -- Joey Hess <joeyh@debian.org>  Mon, 17 Jun 2013 17:40:02 -0400
-
-github-backup (1.20130617) unstable; urgency=low
-
-  * Build-Depend on libghc-extensible-exceptions-dev. Closes: #712549
-  * Various updates to internal git and utility libraries shared with
-    git-annex, including some Windows portability.
-  * Fixed to never touch the git work tree or index file, instead using
-    its own to commit to the github branch.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 17 Jun 2013 12:28:30 -0400
-
-github-backup (1.20130614) unstable; urgency=low
-
-  * Pass --ignore-removal to git-add, in preparation for a future change
-    to its default behavior. Requires git 1.8.3. Closes: #711287
-
- -- Joey Hess <joeyh@debian.org>  Fri, 14 Jun 2013 15:50:49 -0400
-
-github-backup (1.20130414) experimental; urgency=low
-
-  * Updated to use haskell-github 0.6.0, which supports pagination of queries
-    Thanks to John Wiegley for making those changes.
-  * Also backup closed issues. Thanks, John Wiegley.
-  * cabal file no longer tries to list every source file, as that was
-    error-prone, and I left some out.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 12 Apr 2013 18:33:11 -0400
-
-github-backup (1.20120627) unstable; urgency=low
-
-  * Rebuilt with new haskell-github, that works with the new version
-    of http-conduit in Debian. Closes: #678787
-  * Various updates to internal git and utility libraries shared with git-annex.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 27 Jun 2012 22:21:01 -0400
-
-github-backup (1.20120314) unstable; urgency=low
-
-  * First release.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 13 Mar 2012 20:22:43 -0400
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
--- a/debian/compat
+++ /dev/null
@@ -1,1 +0,0 @@
-9
diff --git a/debian/control b/debian/control
deleted file mode 100644
--- a/debian/control
+++ /dev/null
@@ -1,35 +0,0 @@
-Source: github-backup
-Section: utils
-Priority: optional
-Build-Depends: 
-	debhelper (>= 9),
-	ghc,
-	git,
-	libghc-github-dev (>= 0.14.0), libghc-github-dev (<< 0.15.0),
-	libghc-missingh-dev,
-	libghc-hslogger-dev,
-	libghc-pretty-show-dev,
-	libghc-ifelse-dev,
-	libghc-exceptions-dev,
-	libghc-transformers-dev,
-	libghc-unix-compat-dev,
-	libghc-optparse-applicative-dev,
-	libghc-vector-dev,
-	libghc-utf8-string-dev,
-Maintainer: James McCoy <jamessan@debian.org>
-Standards-Version: 3.9.8
-Vcs-Git: git://github.com/joeyh/github-backup.git
-Homepage: http://github.com/joeyh/github-backup
-
-Package: github-backup
-Architecture: any
-Section: utils
-Depends: ${misc:Depends}, ${shlibs:Depends}, git
-Description: backs up data from GitHub
- github-backup is a simple tool you run in a git repository you cloned from
- GitHub. It backs up everything GitHub publishes about the repository,
- including other forks, issues, comments, wikis, milestones, pull requests,
- and watchers.
- .
- Also includes gitriddance, which can be used to close all open issues and
- pull requests.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
--- a/debian/copyright
+++ /dev/null
@@ -1,35 +0,0 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Source: native package
-
-Files: *
-Copyright: © 2010-2014 Joey Hess <joey@kitenet.net>
-License: GPL-3+
- The full text of version 3 of the GPL is distributed as doc/GPL in
- this package's source, or in /usr/share/common-licenses/GPL-3 on
- Debian systems.
-
-Files: Utility/*
-Copyright: 2012-2014 Joey Hess <joey@kitenet.net>
-License: BSD-2-clause
-
-License: BSD-2-clause
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
- .
- THIS SOFTWARE IS PROVIDED BY AUTHORS AND CONTRIBUTORS ``AS IS'' AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
diff --git a/debian/github-backup.lintian-overrides b/debian/github-backup.lintian-overrides
deleted file mode 100644
--- a/debian/github-backup.lintian-overrides
+++ /dev/null
@@ -1,1 +0,0 @@
-binary-or-shlib-defines-rpath
diff --git a/debian/manpages b/debian/manpages
deleted file mode 100644
--- a/debian/manpages
+++ /dev/null
@@ -1,1 +0,0 @@
-github-backup.1
diff --git a/debian/rules b/debian/rules
deleted file mode 100644
--- a/debian/rules
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/make -f
-
-# Avoid using cabal, as it writes to $HOME
-export CABAL=./Setup
-
-# Do use the changelog's version number, rather than making one up.
-export RELEASE_BUILD=1
-
-%:
-	dh $@
diff --git a/github-backup.1 b/github-backup.1
--- a/github-backup.1
+++ b/github-backup.1
@@ -32,4 +32,4 @@
 .IP --no-forks
 Avoid backing up a repository's forks.
 .SH AUTHOR 
-Joey Hess <joey@kitenet.net>
+Joey Hess <id@joeyh.name>
diff --git a/github-backup.cabal b/github-backup.cabal
--- a/github-backup.cabal
+++ b/github-backup.cabal
@@ -1,14 +1,13 @@
 Name: github-backup
-Version: 1.20160522
+Version: 1.20160922
 Cabal-Version: >= 1.8
-Maintainer: Joey Hess <joey@kitenet.net>
+Maintainer: Joey Hess <id@joeyh.name>
 Author: Joey Hess
 Stability: Stable
 Copyright: 2012 Joey Hess
 License: GPL-3
 License-File: COPYRIGHT
 Build-Type: Custom
-Extra-Source-Files: CHANGELOG
 Homepage: https://github.com/joeyh/github-backup
 Category: Utility
 Synopsis: backs up everything github knows about a repository, to the repository
@@ -19,6 +18,17 @@
 
  Also includes gitriddance, which can be used to close all open issues and
  pull requests.
+Extra-Source-Files:
+  stack.yaml
+  README.md
+  CHANGELOG
+  COPYRIGHT
+  GPL
+  github-backup.1
+  gitriddance.1
+  Makefile
+  configure.hs
+  Build/collect-ghc-options.sh
 
 Flag network-uri
   Description: Get Network.URI from the network-uri package
@@ -31,7 +41,7 @@
    network, exceptions, transformers, unix-compat, bytestring, vector,
    IfElse, pretty-show, text, process, optparse-applicative, utf8-string,
    github >= 0.14.0 && < 0.15.0,
-   base >= 4.5, base < 5
+   base >= 4.8, base < 5
   
   if (! os(windows))
     Build-Depends: unix
@@ -42,11 +52,59 @@
     Build-Depends: network-uri (>= 2.6), network (>= 2.6)
   else
     Build-Depends: network (< 2.6), network (>= 2.0)
+  
+  Other-Modules:
+    Build.Version
+    Build.TestConfig
+    Build.Configure
+    Common
+    Github.GetAuth
+    Github.EnumRepos
+    Git
+    Git.CatFile
+    Git.Branch
+    Git.Ref
+    Git.Url
+    Git.Command
+    Git.Version
+    Git.Construct
+    Git.Config
+    Git.UpdateIndex
+    Git.FilePath
+    Git.Types
+    Git.DiffTreeItem
+    Git.Queue
+    Git.BuildVersion
+    Git.HashObject
+    Git.Index
+    Git.Sha
+    Git.Remote
+    Utility.Tmp
+    Utility.Path
+    Utility.FileSystemEncoding
+    Utility.Monad
+    Utility.SafeCommand
+    Utility.Exception
+    Utility.State
+    Utility.Process
+    Utility.FileMode
+    Utility.CoProcess
+    Utility.Process.Shim
+    Utility.UserInfo
+    Utility.Misc
+    Utility.Env
+    Utility.PosixFiles
+    Utility.Data
+    Utility.PartialPrelude
+    Utility.DottedVersion
+    Utility.Applicative
+    Utility.Directory
+    Utility.SystemDirectory
 
 Executable gitriddance
   Main-Is: gitriddance.hs
   GHC-Options: -Wall -fno-warn-tabs
-  Build-Depends: github >= 0.14.0 && < 0.15.0, base >= 4.5, base < 5, text, filepath,
+  Build-Depends: github >= 0.14.0 && < 0.15.0, base >= 4.8, base < 5, text, filepath,
     MissingH, exceptions, transformers, bytestring, vector, hslogger, process,
     containers, unix-compat, IfElse, directory, mtl, utf8-string
   
diff --git a/gitriddance.1 b/gitriddance.1
--- a/gitriddance.1
+++ b/gitriddance.1
@@ -24,4 +24,4 @@
 the GITHUB_USER and GITHUB_PASSWORD environment variables.
 Or, set GITHUB_OAUTH_TOKEN to an oath or personal access token.
 .SH AUTHOR 
-Joey Hess <joey@kitenet.net>
+Joey Hess <id@joeyh.name>
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,35 +1,4 @@
-# For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration.html
-
-# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
-resolver: lts-5.2
-
-# Local packages, usually specified by relative directory name
 packages:
 - '.'
-
-# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
+resolver: lts-6.12
 extra-deps: []
-
-# Override default flag values for local packages and extra-deps
-flags: {}
-
-# Extra package databases containing global packages
-extra-package-dbs: []
-
-# Control whether we use the GHC we find on the path
-# system-ghc: true
-
-# Require a specific version of stack, using version ranges
-# require-stack-version: -any # Default
-# require-stack-version: >= 1.0.0
-
-# Override the architecture used by stack, especially useful on Windows
-# arch: i386
-# arch: x86_64
-
-# Extra directories used by stack for building
-# extra-include-dirs: [/path/to/dir]
-# extra-lib-dirs: [/path/to/dir]
-
-# Allow a newer minor version of GHC than the snapshot specifies
-# compiler-check: newer-minor
