diff --git a/Assistant/Restart.hs b/Assistant/Restart.hs
--- a/Assistant/Restart.hs
+++ b/Assistant/Restart.hs
@@ -53,6 +53,10 @@
 	liftIO . sendNotification . globalRedirNotifier =<< getDaemonStatus
 	void $ liftIO $ forkIO $ do
 		threadDelaySeconds (Seconds 120)
+		terminateSelf
+
+terminateSelf :: IO ()
+terminateSelf =
 #ifndef mingw32_HOST_OS
 		signalProcess sigTERM =<< getPID
 #else
diff --git a/Assistant/Threads/SanityChecker.hs b/Assistant/Threads/SanityChecker.hs
--- a/Assistant/Threads/SanityChecker.hs
+++ b/Assistant/Threads/SanityChecker.hs
@@ -21,7 +21,9 @@
 import Assistant.Ssh
 import Assistant.TransferQueue
 import Assistant.Types.UrlRenderer
+import Assistant.Restart
 import qualified Annex.Branch
+import qualified Git
 import qualified Git.LsFiles
 import qualified Git.Command.Batch
 import qualified Git.Config
@@ -146,6 +148,8 @@
  - will block the watcher. -}
 dailyCheck :: UrlRenderer -> Assistant Bool
 dailyCheck urlrenderer = do
+	checkRepoExists
+
 	g <- liftAnnex gitRepo
 	batchmaker <- liftIO getBatchCommandMaker
 
@@ -203,6 +207,7 @@
 
 hourlyCheck :: Assistant ()
 hourlyCheck = do
+	checkRepoExists
 #ifndef mingw32_HOST_OS
 	checkLogSize 0
 #else
@@ -316,3 +321,9 @@
 	getmtime = realToFrac . modificationTime <$> getSymbolicLinkStatus f
 	go (Just mtime) | check mtime = nukeFile f
 	go _ = noop
+
+checkRepoExists :: Assistant ()
+checkRepoExists = do
+	g <- liftAnnex gitRepo
+	liftIO $ unlessM (doesDirectoryExist $ Git.repoPath g) $
+		terminateSelf
diff --git a/Assistant/WebApp/Control.hs b/Assistant/WebApp/Control.hs
--- a/Assistant/WebApp/Control.hs
+++ b/Assistant/WebApp/Control.hs
@@ -5,7 +5,7 @@
  - Licensed under the GNU AGPL version 3 or higher.
  -}
 
-{-# LANGUAGE CPP, TypeFamilies, QuasiQuotes, MultiParamTypeClasses, TemplateHaskell, OverloadedStrings, RankNTypes #-}
+{-# LANGUAGE TypeFamilies, QuasiQuotes, MultiParamTypeClasses, TemplateHaskell, OverloadedStrings, RankNTypes #-}
 
 module Assistant.WebApp.Control where
 
@@ -16,16 +16,10 @@
 import Assistant.Restart
 import Utility.LogFile
 import Utility.NotificationBroadcaster
-import Utility.PID
 
 import Control.Concurrent
 import qualified Data.Map as M
 import qualified Data.Text as T
-#ifndef mingw32_HOST_OS
-import System.Posix (signalProcess, sigTERM)
-#else
-import Utility.WinProcess
-#endif
 
 getShutdownR :: Handler Html
 getShutdownR = page "Shutdown" Nothing $
@@ -53,15 +47,11 @@
 	 - page time to load in the browser. -}
 	void $ liftIO $ forkIO $ do
 		threadDelay 2000000
-#ifndef mingw32_HOST_OS
-		signalProcess sigTERM =<< getPID
-#else
-		terminatePID =<< getPID
-#endif
+		terminateSelf
 	redirect NotRunningR
 
 {- Use a custom page to avoid putting long polling elements on it that will 
- - fail and cause the web browser to show an error once the webapp is
+ - fail and cause thet web browser to show an error once the webapp is
  - truely stopped. -}
 getNotRunningR :: Handler Html
 getNotRunningR = customPage' False Nothing $
diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,22 @@
+git-annex (5.20140919) unstable; urgency=high
+
+  * Security fix for S3 and glacier when using embedcreds=yes with
+    encryption=pubkey or encryption=hybrid. CVE-2014-6274
+    The creds embedded in the git repo were *not* encrypted.
+    git-annex enableremote will warn when used on a remote that has
+    this problem. For details, see:
+    https://git-annex.branchable.com/upgrades/insecure_embedded_creds/
+  * assistant: Detect when repository has been deleted or moved, and
+    automatically shut down the assistant. Closes: #761261
+  * Windows: Avoid crashing trying to list gpg secret keys, for gcrypt
+    which is not yet supported on Windows.
+  * WebDav: Fix enableremote crash when the remote already exists.
+    (Bug introduced in version 5.20140817.)
+  * add: In direct mode, adding an annex symlink will check it into git,
+    as was already done in indirect mode.
+
+ -- Joey Hess <joeyh@debian.org>  Fri, 19 Sep 2014 12:53:42 -0400
+
 git-annex (5.20140915) unstable; urgency=medium
 
   * New annex.hardlink setting. Closes: #758593
diff --git a/Command/Add.hs b/Command/Add.hs
--- a/Command/Add.hs
+++ b/Command/Add.hs
@@ -75,14 +75,19 @@
 					showStart "add" file
 					next $ perform file
 	addpresent key = ifM isDirect
-		( ifM (goodContent key file) ( stop , add )
+		( do
+			ms <- liftIO $ catchMaybeIO $ getSymbolicLinkStatus file
+			case ms of
+				Just s | isSymbolicLink s -> fixup key
+				_ -> ifM (goodContent key file) ( stop , add )
 		, fixup key
 		)
 	fixup key = do
-		-- fixup from an interrupted add; the symlink
-		-- is present but not yet added to git
+		-- the annexed symlink is present but not yet added to git
 		showStart "add" file
 		liftIO $ removeFile file
+		whenM isDirect $
+			void $ addAssociatedFile key file
 		next $ next $ cleanup file key Nothing =<< inAnnex key
 
 {- The file that's being added is locked down before a key is generated,
diff --git a/Creds.hs b/Creds.hs
--- a/Creds.hs
+++ b/Creds.hs
@@ -23,7 +23,7 @@
 import Utility.FileMode
 import Crypto
 import Types.Remote (RemoteConfig, RemoteConfigKey)
-import Remote.Helper.Encryptable (remoteCipher, remoteCipher', embedCreds)
+import Remote.Helper.Encryptable (remoteCipher, remoteCipher', embedCreds, EncryptionIsSetup)
 import Utility.Env (getEnv)
 
 import qualified Data.ByteString.Lazy.Char8 as L
@@ -40,12 +40,17 @@
 
 {- Stores creds in a remote's configuration, if the remote allows
  - that. Otherwise, caches them locally.
- - The creds are found in storage if not provided. -}
-setRemoteCredPair :: RemoteConfig -> CredPairStorage -> Maybe CredPair -> Annex RemoteConfig
-setRemoteCredPair c storage Nothing = 
-	maybe (return c) (setRemoteCredPair c storage . Just)
+ - The creds are found in storage if not provided.
+ -
+ - The remote's configuration should have already had a cipher stored in it
+ - if that's going to be done, so that the creds can be encrypted using the
+ - cipher. The EncryptionIsSetup phantom type ensures that is the case.
+ -}
+setRemoteCredPair :: EncryptionIsSetup -> RemoteConfig -> CredPairStorage -> Maybe CredPair -> Annex RemoteConfig
+setRemoteCredPair encsetup c storage Nothing = 
+	maybe (return c) (setRemoteCredPair encsetup c storage . Just)
 		=<< getRemoteCredPair c storage
-setRemoteCredPair c storage (Just creds)
+setRemoteCredPair _ c storage (Just creds)
 	| embedCreds c = case credPairRemoteKey storage of
 		Nothing -> localcache
 		Just key -> storeconfig key =<< remoteCipher c
@@ -86,23 +91,31 @@
 	fromconfig = case credPairRemoteKey storage of
 		Just key -> do
 			mcipher <- remoteCipher' c
-			case (mcipher, M.lookup key c) of
-				(_, Nothing) -> return Nothing
-				(Just (_cipher, SharedCipher {}), Just bcreds) ->
-					-- When using a shared cipher, the
-					-- creds are not stored encrypted.
-					fromcreds $ fromB64 bcreds
-				(Just (cipher, _), Just enccreds) -> do
-					creds <- liftIO $ decrypt cipher
-						(feedBytes $ L.pack $ fromB64 enccreds)
-						(readBytes $ return . L.unpack)
-					fromcreds creds
-				(Nothing, Just bcreds) ->
+			case (M.lookup key c, mcipher) of
+				(Nothing, _) -> return Nothing
+				(Just enccreds, Just (cipher, storablecipher)) ->
+					fromenccreds enccreds cipher storablecipher
+				(Just bcreds, Nothing) ->
 					fromcreds $ fromB64 bcreds
 		Nothing -> return Nothing
+	fromenccreds enccreds cipher storablecipher = do
+		mcreds <- liftIO $ catchMaybeIO $ decrypt cipher
+			(feedBytes $ L.pack $ fromB64 enccreds)
+			(readBytes $ return . L.unpack)
+		case mcreds of
+			Just creds -> fromcreds creds
+			Nothing -> do
+				-- Work around un-encrypted creds storage
+				-- bug in old S3 and glacier remotes.
+				-- Not a problem for shared cipher.
+				case storablecipher of
+					SharedCipher {} -> showLongNote "gpg error above was caused by an old git-annex bug in credentials storage. Working around it.."
+					_ -> error "*** Insecure credentials storage detected for this remote! See https://git-annex.branchable.com/upgrades/insecure_embedded_creds/"
+				fromcreds $ fromB64 enccreds
 	fromcreds creds = case decodeCredPair creds of
 		Just credpair -> do
 			writeCacheCredPair credpair storage
+
 			return $ Just credpair
 		_ -> error "bad creds"
 
diff --git a/INSTALL b/INSTALL
--- a/INSTALL
+++ b/INSTALL
@@ -22,15 +22,13 @@
 All the downloads above use https for security. For added security, see
 [[verifying_downloads]].
 
-## Using cabal
-
-As a haskell package, git-annex can be installed from source pretty easily
-[[using cabal|cabal]].
-
-## Installation from scratch
+## Building it yourself
 
-This is not recommended, but if you really want to, see [[fromscratch]].
+git-annex is [[Free Software|license]], written in [Haskell](http://www.haskell.org/).
+Experienced users should not find it too hard to build and install
+it [[from source|fromsource]].
 
 ## See also
+
 
 [[autobuild overview|builds]]
diff --git a/Remote/Bup.hs b/Remote/Bup.hs
--- a/Remote/Bup.hs
+++ b/Remote/Bup.hs
@@ -94,7 +94,7 @@
 	-- verify configuration is sane
 	let buprepo = fromMaybe (error "Specify buprepo=") $
 		M.lookup "buprepo" c
-	c' <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c
 
 	-- bup init will create the repository.
 	-- (If the repository already exists, bup init again appears safe.)
diff --git a/Remote/Ddar.hs b/Remote/Ddar.hs
--- a/Remote/Ddar.hs
+++ b/Remote/Ddar.hs
@@ -84,7 +84,7 @@
 	-- verify configuration is sane
 	let ddarrepo = fromMaybe (error "Specify ddarrepo=") $
 		M.lookup "ddarrepo" c
-	c' <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c
 
 	-- The ddarrepo is stored in git config, as well as this repo's
 	-- persistant state, so it can vary between hosts.
diff --git a/Remote/Directory.hs b/Remote/Directory.hs
--- a/Remote/Directory.hs
+++ b/Remote/Directory.hs
@@ -81,7 +81,7 @@
 	absdir <- liftIO $ absPath dir
 	liftIO $ unlessM (doesDirectoryExist absdir) $
 		error $ "Directory does not exist: " ++ absdir
-	c' <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c
 
 	-- The directory is stored in git config, not in this remote's
 	-- persistant state, so it can vary between hosts.
diff --git a/Remote/External.hs b/Remote/External.hs
--- a/Remote/External.hs
+++ b/Remote/External.hs
@@ -77,7 +77,7 @@
 	u <- maybe (liftIO genUUID) return mu
 	let externaltype = fromMaybe (error "Specify externaltype=") $
 		M.lookup "externaltype" c
-	c' <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c
 
 	external <- newExternal externaltype u c'
 	handleRequest external INITREMOTE Nothing $ \resp -> case resp of
@@ -191,7 +191,7 @@
 		send $ VALUE value
 	handleRemoteRequest (SETCREDS setting login password) = do
 		c <- liftIO $ atomically $ readTMVar $ externalConfig external
-		c' <- setRemoteCredPair c (credstorage setting) $
+		c' <- setRemoteCredPair encryptionAlreadySetup c (credstorage setting) $
 			Just (login, password)
 		void $ liftIO $ atomically $ swapTMVar (externalConfig external) c'
 	handleRemoteRequest (GETCREDS setting) = do
diff --git a/Remote/GCrypt.hs b/Remote/GCrypt.hs
--- a/Remote/GCrypt.hs
+++ b/Remote/GCrypt.hs
@@ -168,7 +168,7 @@
 	remotename = fromJust (M.lookup "name" c)
   	go Nothing = error "Specify gitrepo="
 	go (Just gitrepo) = do
-		c' <- encryptionSetup c
+		(c', _encsetup) <- encryptionSetup c
 		inRepo $ Git.Command.run 
 			[ Params "remote add"
 			, Param remotename
diff --git a/Remote/Glacier.hs b/Remote/Glacier.hs
--- a/Remote/Glacier.hs
+++ b/Remote/Glacier.hs
@@ -76,12 +76,12 @@
 glacierSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
 glacierSetup mu mcreds c = do
 	u <- maybe (liftIO genUUID) return mu
-	c' <- setRemoteCredPair c (AWS.creds u) mcreds
-	glacierSetup' (isJust mu) u c'
-glacierSetup' :: Bool -> UUID -> RemoteConfig -> Annex (RemoteConfig, UUID)
-glacierSetup' enabling u c = do
-	c' <- encryptionSetup c
-	let fullconfig = c' `M.union` defaults
+	glacierSetup' (isJust mu) u mcreds c
+glacierSetup' :: Bool -> UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
+glacierSetup' enabling u mcreds c = do
+	(c', encsetup) <- encryptionSetup c
+	c'' <- setRemoteCredPair encsetup c' (AWS.creds u) mcreds
+	let fullconfig = c'' `M.union` defaults
 	unless enabling $
 		genVault fullconfig u
 	gitConfigSpecialRemote u fullconfig "glacier" "true"
diff --git a/Remote/Helper/Encryptable.hs b/Remote/Helper/Encryptable.hs
--- a/Remote/Helper/Encryptable.hs
+++ b/Remote/Helper/Encryptable.hs
@@ -5,7 +5,18 @@
  - Licensed under the GNU GPL version 3 or higher.
  -}
 
-module Remote.Helper.Encryptable where
+module Remote.Helper.Encryptable (
+	EncryptionIsSetup,
+	encryptionSetup,
+	noEncryptionUsed,
+	encryptionAlreadySetup,
+	remoteCipher,
+	remoteCipher',
+	embedCreds,
+	cipherKey,
+	storeCipher,
+	extractCipher,
+) where
 
 import qualified Data.Map as M
 
@@ -16,11 +27,26 @@
 import qualified Annex
 import Utility.Base64
 
+-- Used to ensure that encryption has been set up before trying to
+-- eg, store creds in the remote config that would need to use the
+-- encryption setup.
+data EncryptionIsSetup = EncryptionIsSetup | NoEncryption
+
+-- Remotes that don't use encryption can use this instead of
+-- encryptionSetup.
+noEncryptionUsed :: EncryptionIsSetup
+noEncryptionUsed = NoEncryption
+
+-- Using this avoids the type-safe check, so you'd better be sure
+-- of what you're doing.
+encryptionAlreadySetup :: EncryptionIsSetup
+encryptionAlreadySetup = EncryptionIsSetup
+
 {- Encryption setup for a remote. The user must specify whether to use
  - an encryption key, or not encrypt. An encrypted cipher is created, or is
  - updated to be accessible to an additional encryption key. Or the user
  - could opt to use a shared cipher, which is stored unencrypted. -}
-encryptionSetup :: RemoteConfig -> Annex RemoteConfig
+encryptionSetup :: RemoteConfig -> Annex (RemoteConfig, EncryptionIsSetup)
 encryptionSetup c = maybe genCipher updateCipher $ extractCipher c
   where
 	-- The type of encryption
@@ -28,7 +54,7 @@
 	-- Generate a new cipher, depending on the chosen encryption scheme
 	genCipher = case encryption of
 		_ | M.member "cipher" c || M.member "cipherkeys" c -> cannotchange
-		Just "none" -> return c
+		Just "none" -> return (c, NoEncryption)
 		Just "shared" -> use "encryption setup" . genSharedCipher
 			=<< highRandomQuality
 		-- hybrid encryption is the default when a keyid is
@@ -48,7 +74,7 @@
 	cannotchange = error "Cannot set encryption type of existing remotes."
 	-- Update an existing cipher if possible.
 	updateCipher v = case v of
-		SharedCipher _ | maybe True (== "shared") encryption -> return c'
+		SharedCipher _ | maybe True (== "shared") encryption -> return (c', EncryptionIsSetup)
 		EncryptedCipher _ variant _
 			| maybe True (== if variant == Hybrid then "hybrid" else "pubkey") encryption ->
 				use "encryption update" $ updateEncryptedCipher newkeys v
@@ -57,7 +83,7 @@
 		showNote m
 		cipher <- liftIO a
 		showNote $ describeCipher cipher
-		return $ storeCipher c' cipher
+		return (storeCipher c' cipher, EncryptionIsSetup)
 	highRandomQuality = 
 		(&&) (maybe True ( /= "false") $ M.lookup "highRandomQuality" c)
 			<$> fmap not (Annex.getState Annex.fast)
@@ -68,11 +94,11 @@
                 -- remotes (while being backward-compatible).
 		[ "keyid", "keyid+", "keyid-", "highRandomQuality" ]
 
-{- Gets encryption Cipher. The decrypted Ciphers are cached in the Annex
- - state. -}
 remoteCipher :: RemoteConfig -> Annex (Maybe Cipher)
 remoteCipher = fmap fst <$$> remoteCipher'
 
+{- Gets encryption Cipher. The decrypted Ciphers are cached in the Annex
+ - state. -}
 remoteCipher' :: RemoteConfig -> Annex (Maybe (Cipher, StorableCipher))
 remoteCipher' c = go $ extractCipher c
   where
diff --git a/Remote/Hook.hs b/Remote/Hook.hs
--- a/Remote/Hook.hs
+++ b/Remote/Hook.hs
@@ -70,7 +70,7 @@
 	u <- maybe (liftIO genUUID) return mu
 	let hooktype = fromMaybe (error "Specify hooktype=") $
 		M.lookup "hooktype" c
-	c' <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c
 	gitConfigSpecialRemote u c' "hooktype" hooktype
 	return (c', u)
 
diff --git a/Remote/Rsync.hs b/Remote/Rsync.hs
--- a/Remote/Rsync.hs
+++ b/Remote/Rsync.hs
@@ -138,7 +138,7 @@
 	-- verify configuration is sane
 	let url = fromMaybe (error "Specify rsyncurl=") $
 		M.lookup "rsyncurl" c
-	c' <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c
 
 	-- The rsyncurl is stored in git config, not only in this remote's
 	-- persistant state, so it can vary between hosts.
diff --git a/Remote/S3.hs b/Remote/S3.hs
--- a/Remote/S3.hs
+++ b/Remote/S3.hs
@@ -77,10 +77,9 @@
 s3Setup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
 s3Setup mu mcreds c = do
 	u <- maybe (liftIO genUUID) return mu
-	c' <- setRemoteCredPair c (AWS.creds u) mcreds
-	s3Setup' u c'
-s3Setup' :: UUID -> RemoteConfig -> Annex (RemoteConfig, UUID)
-s3Setup' u c = if isIA c then archiveorg else defaulthost
+	s3Setup' u mcreds c
+s3Setup' :: UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
+s3Setup' u mcreds c = if isIA c then archiveorg else defaulthost
   where
 	remotename = fromJust (M.lookup "name" c)
 	defbucket = remotename ++ "-" ++ fromUUID u
@@ -97,13 +96,15 @@
 		return (fullconfig, u)
 
 	defaulthost = do
-		c' <- encryptionSetup c
-		let fullconfig = c' `M.union` defaults
+		(c', encsetup) <- encryptionSetup c
+		c'' <- setRemoteCredPair encsetup c' (AWS.creds u) mcreds
+		let fullconfig = c'' `M.union` defaults
 		genBucket fullconfig u
 		use fullconfig
 
 	archiveorg = do
 		showNote "Internet Archive mode"
+		void $ setRemoteCredPair noEncryptionUsed c (AWS.creds u) mcreds
 		-- Ensure user enters a valid bucket name, since
 		-- this determines the name of the archive.org item.
 		let bucket = replace " " "-" $ map toLower $
diff --git a/Remote/WebDAV.hs b/Remote/WebDAV.hs
--- a/Remote/WebDAV.hs
+++ b/Remote/WebDAV.hs
@@ -81,11 +81,11 @@
 	url <- case M.lookup "url" c of
 		Nothing -> error "Specify url="
 		Just url -> return url
-	c' <- encryptionSetup c
+	(c', encsetup) <- encryptionSetup c
 	creds <- maybe (getCreds c' u) (return . Just) mcreds
 	testDav url creds
 	gitConfigSpecialRemote u c' "webdav" "true"
-	c'' <- setRemoteCredPair c' (davCreds u) creds
+	c'' <- setRemoteCredPair encsetup c' (davCreds u) creds
 	return (c'', u)
 
 -- Opens a http connection to the DAV server, which will be reused
@@ -183,7 +183,7 @@
 	test $ liftIO $ evalDAVT url $ do
 		prepDAV user pass
 		makeParentDirs
-		inLocation tmpDir $ void mkCol
+		void $ mkColRecursive tmpDir
 		inLocation (tmpLocation "git-annex-test") $ do
 			putContentM (Nothing, L.empty)
 			delContentM
diff --git a/Test.hs b/Test.hs
--- a/Test.hs
+++ b/Test.hs
@@ -113,13 +113,16 @@
 			)
   where
 	parseOpts pprefs pinfo args =
-#if MIN_VERSION_optparse_applicative(0,8,0)
-		handleParseResult $ execParserPure pprefs pinfo args
+#if MIN_VERSION_optparse_applicative(0,10,0)
+		case execParserPure pprefs pinfo args of
+			(Options.Applicative.Failure failure) -> do
+				let (msg, _exit) = renderFailure failure progdesc
+				error msg
+			v -> handleParseResult v
 #else
-		either (error <=< flip errMessage progdesc) return $
-			execParserPure pprefs pinfo args
-  	progdesc = "git-annex test"
+		handleParseResult $ execParserPure pprefs pinfo args
 #endif
+  	progdesc = "git-annex test"
 
 ingredients :: [Ingredient]
 ingredients =
diff --git a/Utility/Gpg.hs b/Utility/Gpg.hs
--- a/Utility/Gpg.hs
+++ b/Utility/Gpg.hs
@@ -163,8 +163,9 @@
 {- All of the user's secret keys, with their UserIds.
  - Note that the UserId may be empty. -}
 secretKeys :: IO (M.Map KeyId UserId)
-secretKeys = M.fromList . parse . lines <$> readStrict params
+secretKeys = catchDefaultIO M.empty makemap
   where
+	makemap = M.fromList . parse . lines <$> readStrict params
   	params = [Params "--with-colons --list-secret-keys --fixed-list-mode"]
 	parse = extract [] Nothing . map (split ":")
 	extract c (Just keyid) (("uid":_:_:_:_:_:_:_:_:userid:_):rest) =
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,22 @@
+git-annex (5.20140919) unstable; urgency=high
+
+  * Security fix for S3 and glacier when using embedcreds=yes with
+    encryption=pubkey or encryption=hybrid. CVE-2014-6274
+    The creds embedded in the git repo were *not* encrypted.
+    git-annex enableremote will warn when used on a remote that has
+    this problem. For details, see:
+    https://git-annex.branchable.com/upgrades/insecure_embedded_creds/
+  * assistant: Detect when repository has been deleted or moved, and
+    automatically shut down the assistant. Closes: #761261
+  * Windows: Avoid crashing trying to list gpg secret keys, for gcrypt
+    which is not yet supported on Windows.
+  * WebDav: Fix enableremote crash when the remote already exists.
+    (Bug introduced in version 5.20140817.)
+  * add: In direct mode, adding an annex symlink will check it into git,
+    as was already done in indirect mode.
+
+ -- Joey Hess <joeyh@debian.org>  Fri, 19 Sep 2014 12:53:42 -0400
+
 git-annex (5.20140915) unstable; urgency=medium
 
   * New annex.hardlink setting. Closes: #758593
diff --git a/doc/bugs/box.com/comment_1_d904a08519424cb9f599b2154d1ef953._comment b/doc/bugs/box.com/comment_1_d904a08519424cb9f599b2154d1ef953._comment
new file mode 100644
--- /dev/null
+++ b/doc/bugs/box.com/comment_1_d904a08519424cb9f599b2154d1ef953._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 1"
+ date="2014-09-18T19:28:56Z"
+ content="""
+Ok, I managed to reproduce this. In my case, there was no \"Bad creds\" message because the broken creds data it used happened to contain a newline, but same problem; the creds stored by the webapp are not used properly when re-enabling the box.com remote elsewhere. Same problem would affect other special remotes using embedded creds and shared encryption.
+
+Seems to be a bug introduced in [[!commit fbdeeeed5fa276d94be587c8916d725eddcaf546]]. Despite what the commit says, the embedded creds did get encrypted with the shared gpg key. I have reverted that commit to fix this problem.
+"""]]
diff --git a/doc/bugs/webapp_on_windows_7_64_bit_fail_to_add_server_repo.mdwn b/doc/bugs/webapp_on_windows_7_64_bit_fail_to_add_server_repo.mdwn
--- a/doc/bugs/webapp_on_windows_7_64_bit_fail_to_add_server_repo.mdwn
+++ b/doc/bugs/webapp_on_windows_7_64_bit_fail_to_add_server_repo.mdwn
@@ -64,3 +64,13 @@
 
 # End of transcript or log.
 """]]
+
+> Thanks for reporting this problem. I've fixed it to not crash when gpg 
+> fails to list secret keys.
+> 
+> That doesn't fix the problem that the cygnus build of gpg does not find
+> the user's home directory properly. But that's only needed for the
+> encrypted repository (gcrypt) support, which is listed in
+> [[windows_support]] as not yet available for Windows.
+>
+> So, not leaving this bug report open. [[done]] --[[Joey]]
diff --git a/doc/chunking.mdwn b/doc/chunking.mdwn
--- a/doc/chunking.mdwn
+++ b/doc/chunking.mdwn
@@ -28,4 +28,16 @@
 `git annex enableremote`. This only affects the chunk sized used when
 storing new content.
 
+# old-style chunking
+
+Note that older versions of git-annex used a different chunk method, which
+was configured by passing `chunksize=nnMib` when initializing a remote.
+
+The old-style chunking had a number of problems, including being less
+efficient, and not allowing resumes of encrypted uploads.
+
+It's not possible to change a remote using that old chunking method to the
+new one, but git-annex continues to support the old-style chunking to
+support such remotes.
+
 See also: [[design document|design/assistant/chunks]]
diff --git a/doc/contribute.mdwn b/doc/contribute.mdwn
--- a/doc/contribute.mdwn
+++ b/doc/contribute.mdwn
@@ -24,7 +24,8 @@
 
 ## code contributions
 
-[[download]] the source code and send patches!
+[[download]] the source code, [[build|install/fromsource]] it
+and send patches!
 
 If you know Haskell, git-annex has lots of Haskell code that
 could be improved. See the [[coding_style]] and have at it.
diff --git a/doc/devblog/day_220__working_through_backlog.mdwn b/doc/devblog/day_220__working_through_backlog.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/devblog/day_220__working_through_backlog.mdwn
@@ -0,0 +1,14 @@
+Made a release yesterday, which was all bugfixes.
+
+Today, a few more bug fixes. Looked into making the webapp
+create non-bare repositories on removable drives, but before I got too far
+into the code, I noticed [there's a big problem with that idea](http://git-annex.branchable.com/forum/usability:_creating_an_archive_on_a_new_external_drive/).
+
+Rest of day was spent getting caught up on forum posts etc. I'm happy to
+read lots of good answers that have been posted while I've been away.
+Here's an excellent example: <http://git-annex.branchable.com/install/fromsource/#comment-5f8ceb060643ae71cd2adc72f0fca3f0>
+
+That led to rewriting the docs for building git-annex from source.
+New page: [[install/fromsource]].
+
+Backlog is now down to 117.
diff --git a/doc/devblog/day_221__another_fine_day_of_bugfixing.mdwn b/doc/devblog/day_221__another_fine_day_of_bugfixing.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/devblog/day_221__another_fine_day_of_bugfixing.mdwn
@@ -0,0 +1,10 @@
+Working through the forum posts and bugs. Backlog is down to 95.
+
+Discovered the first known security hole in git-annex!
+Turns out that S3 and Glacier remotes that were configured with embedcreds=yes and encryption=pubkey or encryption=hybrid
+didn't actually encrypt the AWS credentials that get embedded into the git
+repo. This doesn't affect any repos set up by the assistant.
+
+I've fixed the problem and am going to make a release soon.
+If your repo is affected, see 
+[[upgrades/insecure_embedded_creds]] for what to do about it.
diff --git a/doc/forum/big_overhead.mdwn b/doc/forum/big_overhead.mdwn
--- a/doc/forum/big_overhead.mdwn
+++ b/doc/forum/big_overhead.mdwn
@@ -1,3 +1,5 @@
+[[!meta title="unreachable git objects"]]
+
 Hi,
 
 I am been seeing quite big overheads using `git-annex`.  Is this is normal?
diff --git a/doc/forum/big_overhead/comment_10_d5f4e353e7f711d8c38cdcc222339bca._comment b/doc/forum/big_overhead/comment_10_d5f4e353e7f711d8c38cdcc222339bca._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_10_d5f4e353e7f711d8c38cdcc222339bca._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 10"
+ date="2014-09-18T17:27:36Z"
+ content="""
+In the meantime, I've been looking over the Annex.Branch code. 
+
+`stageJournal` is only ever called in code paths that commit the updated index, so those code paths cannot result in dangling objects unless git-annex is interrupted before it can commit. (This may explain some of my own repos having a few dangling refs, that were not commits; I could have ctrl-c'd git-annex.)
+
+It's possible for a forced update of the local git-annex branch, done by eg a push from another repo, to overwrite a commit made to it. In this case, the git-annex index is merged with the branch, resulting in a new commit, and the old commit that was overwritten will indeed be dangling. However, `git annex sync` doesn't overwrite the git-annex branch; it pushes to synced/git-annex, or does a `taggedPush` to a private ref. It is the case that both those pushes are forced pushes, so can overwrite a branch ref and leave the old commit it pointed to dangling. In the case of `taggedPush`, the old commit should be a parent of the new, so it won't dangle. In the case of synced/git-annex being overwritten, the old commit could dangle, but only until whatever repo pushed it syncs again, at which time it should get incorporated as one of the parents of the new synced/git-annex it pushes. So, I don't see how long-term dangling commits could happen this way, except for in the case where a repository stops syncing/goes missing/rebases its git-annex branch (ie, git-annex forget is used). (This may explain the 2 dangling commits I found on elephant; we did delete some clones of that repository recently.)
+
+At this point I'm not convinced that the dangling objects I found in my own repos are due to some systematic problem, the above seems like it could explain them, and the above is not a problem on the class of the one Rasmus is having. Of course, it's hard to be sure you've spotted all possible ways that a resource leak can happen, and that's what these dangling objects basically are.
+"""]]
diff --git a/doc/forum/big_overhead/comment_11_cbf25217e4149f2cfad4e2bf94f2b4ca._comment b/doc/forum/big_overhead/comment_11_cbf25217e4149f2cfad4e2bf94f2b4ca._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_11_cbf25217e4149f2cfad4e2bf94f2b4ca._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 11"
+ date="2014-09-18T17:32:09Z"
+ content="""
+I knew I *had* used \"Initial commit\" somewhere ... etckeeper uses that message. And commits as root. Could an etckeeper repo have somehow gotten merged into your git-annex repo? Seems strange, and the filenames and contents don't really look like /etc to me, but it otherwise somewhat fits.
+"""]]
diff --git a/doc/forum/big_overhead/comment_12_475d5af95adcfcd3a51e10f270205eb7._comment b/doc/forum/big_overhead/comment_12_475d5af95adcfcd3a51e10f270205eb7._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_12_475d5af95adcfcd3a51e10f270205eb7._comment
@@ -0,0 +1,71 @@
+[[!comment format=mdwn
+ username="rasmus"
+ ip="146.185.23.178"
+ subject="comment 12"
+ date="2014-09-19T00:43:56Z"
+ content="""
+Hi Joey,
+
+Thanks for giving the thread a more appropriate title and thanks for the helpful messages. 
+
+Let me start with the easy points:
+
+
+* Looking at my log file of installed packages I have never used `etckeeper` on my system.  So unless it could have entered through `annex` then I think we can rule that one out. 
+* According to `git log` the repos are from January 2014 where I restarted my repos. 
+
+
+        commit 029a8e76ab5f66aa4390987130985550a1ccd69c
+        Author: Rasmus <w530@domain.eu>
+        Date:   Thu Jan 23 21:06:13 2014 +0100
+
+        created repository
+
+
+* When I start git repos I typically just use \"init\" so I don't think I did the 2012 commits. 
+* I checked out one of the 74mb files.  When I do `file test.blob` it shows `test.blob: GPG symmetrically encrypted data (CAST5 cipher)`.  But none of my normal passwords worked.  Could such a gpg'ed file be from local network connections where the assistant asks for a passphrase?  I'm pretty sure that my transfer repo has only been using `gcrypt` and I believe I \"restarted\" my repos because I switched to `gcrypt` repos.  Also, my transfer repo is 10Gb as well which sounds big for transfer repo. 
+
+I performed a similar \"analysis\" on the `conf.annex` repo which should contain mostly no binary files (some 16x16 pngs etc).  
+
+`conf.annex` has 727 unreachable objects and 3477 commits in total.  Of these 338 are commits.  Here's an example of a larger commit message of an unreachable commit.
+
+    commit 601c10f9512e8d3502d9dd52ef409560ebb5b7e0
+    Author: root <root@localhost>
+    Date:   Mon Dec 31 19:00:01 2012 -0400
+
+         Initial commit
+
+     diff --git a/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5 b/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5
+     new file mode 100644
+     index 0000000..ea5fcc3
+     Binary files /dev/null and b/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5 differ
+     diff --git a/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
+     new file mode 100644
+     index 0000000..a86c1a9
+     Binary files /dev/null and b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a differ
+     diff --git a/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194 b/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194
+     new file mode 100644
+     index 0000000..ef1d71c
+     Binary files /dev/null and b/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194 differ
+     diff --git a/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594 b/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594
+     new file mode 100644
+     index 0000000..61d3e5b
+     Binary files /dev/null and b/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594 differ
+     diff --git a/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc b/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc
+     new file mode 100644
+     index 0000000..92e9bd7
+     Binary files /dev/null and b/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc differ
+
+Across all commits 6006 objects are mentioned, but only 371 are unique. 
+
+I checked out one blob and again `file` reports `GPG symmetrically encrypted data (CAST5 cipher)`.  Interesting for `conf.annex` I get this line when trying to decrypt
+
+    gpg: DBG: cleared passphrase cached with ID: SBF83A0F822D0F664
+
+
+For `doc.annex` I get
+
+    gpg: DBG: cleared passphrase cached with ID: S32DEAD1E8DD06A4D
+
+And on my other computer I see a third ID.  I'm not sure if this means anything when files are symmetrically encrypted, though. 
+"""]]
diff --git a/doc/forum/big_overhead/comment_13_1c8cc992f04fc63179094c494bd25025._comment b/doc/forum/big_overhead/comment_13_1c8cc992f04fc63179094c494bd25025._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_13_1c8cc992f04fc63179094c494bd25025._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="I know what it is now"
+ date="2014-09-19T02:43:22Z"
+ content="""
+These objects are the ones written by git-remote-gcrypt when pushing to a remote. That's why the weird dates, root pseudo-commit, crazy filenames, and big gpg encrypted blobs. All countermeasures that git-remote-gcrypt uses to keep your encrypted git remote safe and not leak information about what's in it.
+
+So, this is a bug in git-remote-gcrypt. It needs to clean these objects up after pushing them! (Also after failed pushes.)
+"""]]
diff --git a/doc/forum/big_overhead/comment_14_cbfb3d557915258e72c65a4e84df77a9._comment b/doc/forum/big_overhead/comment_14_cbfb3d557915258e72c65a4e84df77a9._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_14_cbfb3d557915258e72c65a4e84df77a9._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 14"
+ date="2014-09-19T02:59:36Z"
+ content="""
+<https://github.com/bluss/git-remote-gcrypt/issues/16>
+"""]]
diff --git a/doc/forum/big_overhead/comment_15_b973529bae549bcbaaae792f0403989b._comment b/doc/forum/big_overhead/comment_15_b973529bae549bcbaaae792f0403989b._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_15_b973529bae549bcbaaae792f0403989b._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="rasmus"
+ ip="217.130.110.20"
+ subject="comment 15"
+ date="2014-09-19T06:29:58Z"
+ content="""
+Brilliant!  Thanks for taking time to analyze the issue and taking the bug to `gcrypt`.
+
+[I'm surprised that a different key than my git-annex key is used and that it's a symmetric key, but I will explore the technology on my own].
+"""]]
diff --git a/doc/forum/big_overhead/comment_7_a762eb55addf81c1c5350c7968598d0f._comment b/doc/forum/big_overhead/comment_7_a762eb55addf81c1c5350c7968598d0f._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_7_a762eb55addf81c1c5350c7968598d0f._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 7"
+ date="2014-09-17T20:20:40Z"
+ content="""
+There are a few things that can cause git to leave unreachable objects. These include: Rebasing; interrupting a pull before it updates the refs; running git add on a file and then changing the file's content and adding it a second time before committing.
+
+I can think of one case where this happens when using git-annex at the command line: `git annex add $file; git mv $file other-directory; git commit` will result in a dangling object storing the old symlink target before the file was moved.
+
+It'd be useful to investigate, by using `git fsck --unreachable` to get a list of currently unreachable objects, and then use `git show` to look at the objects and try to determine where they came from. Ie, are they symlink targets or are they git-annex location log files (formatted as columns of timestamps and uuids). Any unreachable commits would be the most useful to investigate.
+
+I see a few loose objects here and there in my annexes, but not very many, and git-gc has cleaned up old ones (> 1 month old). Some of them seem to be location log files. I see those in both repositories where I use the assistant, and repositories where I use only command line git-annex. I was able to find 2 unreachable commits in a repository that runs the assistant full-time; both commits were \"merging origin/synced/git-annex into git-annex\". This suggests to me that perhaps the assistant merged the git-annex branch but that merge was overwritten by another thread that committed changes to the branch at the same time.
+
+You should also check the size of inodes on your system; a thousand small loose objects in .git/objects does not normally take up gigabytes of space; with typical inode sizes it might use up a few megabytes. With 1 mb inodes, those same thousand files would use 1 gb..
+"""]]
diff --git a/doc/forum/big_overhead/comment_8_4a66f57c6c0bdc6123618cb69a719be5._comment b/doc/forum/big_overhead/comment_8_4a66f57c6c0bdc6123618cb69a719be5._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_8_4a66f57c6c0bdc6123618cb69a719be5._comment
@@ -0,0 +1,65 @@
+[[!comment format=mdwn
+ username="rasmus"
+ ip="217.130.110.20"
+ subject="comment 8"
+ date="2014-09-18T11:28:45Z"
+ content="""
+Hi Joey,
+
+Thanks for your careful reply.  
+
+Easy things first:
+
+I *never* add anything from the terminal, though I may do checks and `git annex get`, since sometimes the assistance actually grab the updated files.  Until recently I started git annex automatically on boot, but at the moment it simply renders my laptop useless for too long -- presumably due to the errors investigated here.
+
+I use btrfs (don't ask me why).  Searching online, I did not find a way to find the size of inodes, but I assume that it's sensible?  tune2fs doesn't work but as I understand it is designed for ext*.
+
+What takes up space in my `.git/objects` is files of several Mb.  So at the moment the `pack` folder is 700mb.  In the next biggest folder there's three files that are 73,4mb and 8 files that are 4kb.  This pattern repeats.  A couple of large files (73,4 shows up quite a bit as well as 45) and many small files. 
+
+I have an astonishing amount of dangling objects.  In the `doc.annex` `git rev-list HEAD --count` gives 27354.  In this repo I have 1108 unreachable blobs and commits, respectively 569 and 539.  This probably explains why `git prune` solves my problem but I don't understand why all these large files reappears when I sync -- even after having run `git prune` on both laptops.  Could they come from the `annex` on my remote server?
+
+`git show` isn't nice on blobs, but here is an example of a dangling commit
+
+
+    commit 478425bef867782e8ff22aca24316e9421288c49
+    Author: root <root@localhost>
+    Date:   Mon Dec 31 19:00:01 2012 -0400
+
+        Initial commit
+
+    diff --git a/6e5039464b41f39088a4aece64ced787aa2b04ec2dd5ac6f6c6ca4b9a06a99e5 b/6e5039464b41f39088a4aece64ced787aa2b04ec2dd5ac6f6c6ca4b9a06a99e5
+    new file mode 100644
+    index 0000000..af12763
+    Binary files /dev/null and b/6e5039464b41f39088a4aece64ced787aa2b04ec2dd5ac6f6c6ca4b9a06a99e5 differ
+    diff --git a/8ae4ee273eb540fb71b78152d10010ea2dd3d1bb82afe410ecf3d811cb72bd6d b/8ae4ee273eb540fb71b78152d10010ea2dd3d1bb82afe410ecf3d811cb72bd6d
+    new file mode 100644
+    index 0000000..0a6af91
+    Binary files /dev/null and b/8ae4ee273eb540fb71b78152d10010ea2dd3d1bb82afe410ecf3d811cb72bd6d differ
+    diff --git a/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
+    new file mode 100644
+    index 0000000..26d921e
+    Binary files /dev/null and b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a differ
+    diff --git a/9f7728197cfcd9792eef1ff5930a4ab580e38e64291037130f1ad0914e34a1fc b/9f7728197cfcd9792eef1ff5930a4ab580e38e64291037130f1ad0914e34a1fc
+    new file mode 100644
+    index 0000000..2a92974
+    Binary files /dev/null and b/9f7728197cfcd9792eef1ff5930a4ab580e38e64291037130f1ad0914e34a1fc differ
+    diff --git a/ac801235d97275e761efa12a76ee009472cae8549a0835d5be8bd3f6657047fb b/ac801235d97275e761efa12a76ee009472cae8549a0835d5be8bd3f6657047fb
+    new file mode 100644
+    index 0000000..543430c
+    Binary files /dev/null and b/ac801235d97275e761efa12a76ee009472cae8549a0835d5be8bd3f6657047fb differ
+    diff --git a/d400d0f616a980ea5e3ef68a1f9d670d1eeccbd27f34d1cb7ea976e1f98e2fb7 b/d400d0f616a980ea5e3ef68a1f9d670d1eeccbd27f34d1cb7ea976e1f98e2fb7
+    new file mode 100644
+    index 0000000..7b7eadd
+    Binary files /dev/null and b/d400d0f616a980ea5e3ef68a1f9d670d1eeccbd27f34d1cb7ea976e1f98e2fb7 differ
+    diff --git a/e988a26fbabe3f498e2a564096948eafb289ccadfb186423c1f63c5a3b2c19db b/e988a26fbabe3f498e2a564096948eafb289ccadfb186423c1f63c5a3b2c19db
+    new file mode 100644
+    index 0000000..3bd1dfa
+    Binary files /dev/null and b/e988a26fbabe3f498e2a564096948eafb289ccadfb186423c1f63c5a3b2c19db differ
+
+There are several things I don't understand.  Why is the author root?  I never run `git annex` with `sudo` or as root.  I think the date is bogus.  I'm pretty sure I wasn't even running `git annex` in 2012 much less working with this repo. . . What is weird is that this is the date for *all* lost commits!  (Same for Author).  Over all lost commits there are 2352 binary files that differ.  Of these there are 284 unique hashes. . .  I don't know what this means other than my repo being seriously messed up.  I don't understand what I did wrong to end up in this state as I have been fairly careful in mainly using the `webapp`.
+
+I wonder if the best way to proceed is to start over, or whether this repo can be recovered.
+
+Thanks,
+Rasmus
+"""]]
diff --git a/doc/forum/big_overhead/comment_9_5fa681ea0d6bd0dcac7142d40df9d54f._comment b/doc/forum/big_overhead/comment_9_5fa681ea0d6bd0dcac7142d40df9d54f._comment
new file mode 100644
--- /dev/null
+++ b/doc/forum/big_overhead/comment_9_5fa681ea0d6bd0dcac7142d40df9d54f._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 9"
+ date="2014-09-18T16:54:10Z"
+ content="""
+That is a very strange commit by every metric. Weird author, weird date, weird filenames in it (not files that git-annex uses!), with apparently some weird binary content (which git-annex would not be committing). Even a weird commit message -- git-annex never makes a commit with a message of \"Initial commit\", and as far as I can tell using `git log -S`, it never has. (OTOH, it's a pretty common example message used in eg, git documentation.) So, I feel pretty sure that dangling commit was not made by git-annex.
+
+I think you need to take a look at some of the 4+mb unreachable blobs, to get some idea of what these files are. One way is to use git-show on the hash of one of the blobs to get its content, and then, perhaps pass it to `file` or `strings`. Or, you could stop the assistant, `git checkout 478425bef867782e8ff22aca24316e9421288c49` and have a look at this strange tree that was apparently committed in 2012 to see what's in there.
+
+It might be possible that the dangling commits come somehow from the remote server. I'm not 100% sure, but I think that a git pack can end up with dangling objects in it, and then git can pull down that pack to get other, non-dangling objects. You should use `git show` on the server on some of the dangling shas to see if they are present there.
+"""]]
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -148,7 +148,8 @@
   Or specify `--fast` to sync with the remotes with the
   lowest annex-cost value.
 
-  The sync process involves first committing all local changes,
+  The sync process involves first committing any local changes to files
+  that have previously been added to the repository,
   then fetching and merging the `synced/master` and the `git-annex` branch
   from the remote repositories, and finally pushing the changes back to
   those branches on the remote repositories. You can use standard git
diff --git a/doc/install.mdwn b/doc/install.mdwn
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -22,15 +22,13 @@
 All the downloads above use https for security. For added security, see
 [[verifying_downloads]].
 
-## Using cabal
-
-As a haskell package, git-annex can be installed from source pretty easily
-[[using cabal|cabal]].
-
-## Installation from scratch
+## Building it yourself
 
-This is not recommended, but if you really want to, see [[fromscratch]].
+git-annex is [[Free Software|license]], written in [Haskell](http://www.haskell.org/).
+Experienced users should not find it too hard to build and install
+it [[from source|fromsource]].
 
 ## See also
+
 
 [[autobuild overview|builds]]
diff --git a/doc/install/Linux_standalone.mdwn b/doc/install/Linux_standalone.mdwn
--- a/doc/install/Linux_standalone.mdwn
+++ b/doc/install/Linux_standalone.mdwn
@@ -1,5 +1,5 @@
 If your Linux distribution does not have git-annex packaged up for you,
-you can either build it [[fromscratch]], or you can use a handy
+you can either build it [[fromsource]], or you can use a handy
 prebuilt tarball of the most recent release.
 
 This tarball should work on most Linux systems. It has basically no
diff --git a/doc/install/OSX/porting.mdwn b/doc/install/OSX/porting.mdwn
--- a/doc/install/OSX/porting.mdwn
+++ b/doc/install/OSX/porting.mdwn
@@ -3,4 +3,5 @@
 can try building git-annex from source on OSX, using haskell's cabal package
 manager.
 
-For general instructions for using cabal, see [[this page|/install/cabal]].
+For general instructions on building git-annex from source see
+[[install/fromsource]]
diff --git a/doc/install/cabal.mdwn b/doc/install/cabal.mdwn
deleted file mode 100644
--- a/doc/install/cabal.mdwn
+++ /dev/null
@@ -1,58 +0,0 @@
-As a haskell package, git-annex can be installed using cabal. 
-
-This involves building a lot of haskell packages from source, and so it has
-a lot of moving parts, and it's not uncommon for it to be broken from time
-to time.
-
-If you are not comfortable tracking down and dealing with library build
-problems, installing git-annex with cabal is probably not the right choice
-for you!
-
-## prerequisites
-
-Start by installing the [Haskell Platform][]. In Debian, this is as
-simple as:
-
-    sudo apt-get install haskell-platform
-
- [Haskell Platform]: http://hackage.haskell.org/platform/
-
-## minimal build
-
-This builds git-annex without some features that require C libraries, that
-can be harder to get installed. This is plenty to get started using it,
-although it does not include the assistant or webapp.
-
-	cabal update
-	PATH=$HOME/bin:$PATH
-	cabal install git-annex --bindir=$HOME/bin -f"-assistant -webapp -webdav -pairing -xmpp -dns"
-
-## full build
-
-To build with all features enabled, including the assistant and webapp,
-you will need to install several C libraries and their headers,
-including libgnutls, libgsasl, libxml2, and zlib. Then run:
-
-	cabal update
-	PATH=$HOME/bin:$PATH
-	cabal install c2hs --bindir=$HOME/bin
-	cabal install git-annex --bindir=$HOME/bin
-
-## building from git checkout
-
-But maybe you want something newer (or older). Then [[download]] the version
-you want, and use cabal as follows inside its source tree:
-
-	cabal update
-	PATH=$HOME/bin:$PATH
-	cabal install c2hs --bindir=$HOME/bin
-	cabal install --only-dependencies
-	cabal configure
-	cabal build
-	cabal install --bindir=$HOME/bin
-
-## EKG
-
-When building with cabal, you can optionally enable the 
-[[EKG monitoring interface|ekg]]. This is great for debugging resource
-usage problems.
diff --git a/doc/install/cabal/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment b/doc/install/cabal/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.246.110"
- subject="comment 10"
- date="2013-07-27T17:49:07Z"
- content="""
-@Henning; see the [[OSX]] page for full installation instructions for OSX. Which include all the neccesary brew incantations.
-"""]]
diff --git a/doc/install/cabal/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment b/doc/install/cabal/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment
+++ /dev/null
@@ -1,44 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"
- nickname="Gregor"
- subject="Installation on tonidoplug"
- date="2013-08-03T07:19:54Z"
- content="""
-I tried various ways to install git-annex on my [TonidoPlug](http://www.tonidoplug.com/).
-
-System Info:
-
-	root@TonidoPlug2:~# uname -a
-	Linux TonidoPlug2 2.6.31.8-topkick1281p2-001-004-20101214 #1 Thu Jun 16 10:06:20 CST 2011 armv5tel GNU/Linux
-
-`apt-get` didn't work.
-
-	root@TonidoPlug2:~# apt-get install git-annex
-	Reading package lists... Done
-	Building dependency tree       
-	Reading state information... Done
-	E: Unable to locate package git-annex
-
-The Linux standalone installation results in an error message like this, when calling `git-annex` (or `git annex`)
-
-	~$ git-annex.linux/git-annex
-	/home/gitolite/git-annex.linux/bin/git-annex: 1: Syntax error: \")\" unexpected
-
-(git-annex.linux/bin/git-annex is a binary file and works fine on other distros)
-
-When installing with cabal, I get the error message (tried as root and gitolite user)
-
-	~$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
-	Resolving dependencies...
-	cabal: cannot configure git-annex-4.20130802. It requires base >=4.5 && <4.8
-	For the dependency on base >=4.5 && <4.8 there are these packages:
-	base-4.5.0.0, base-4.5.1.0, base-4.6.0.0 and base-4.6.0.1. However none of
-	them are available.
-	base-4.5.0.0 was excluded because of the top level dependency base -any
-	base-4.5.1.0 was excluded because of the top level dependency base -any
-	base-4.6.0.0 was excluded because of the top level dependency base -any
-	base-4.6.0.1 was excluded because of the top level dependency base -any
-
-Any help is appreciated.
-Thanks for providing git-annex. I started cleaning up my backups with it yesterday and really like it.
-"""]]
diff --git a/doc/install/cabal/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment b/doc/install/cabal/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="2001:4978:f:21a::2"
- subject="comment 12"
- date="2013-08-07T16:31:30Z"
- content="""
-The Linux standalone builds for i386 and amd64 will not work on Arm systems.
-
-There are builds of git-annex for arm in eg, Debian. You should be able to use one of those if this system is running Debian. You may need to upgrade to eg, Debian stable, which includes git-annex.
-
-It looks like you have an old and/or broken GHC compiler too. You could upgrade that to a newer version (eg from Debian stable) and build it that way, but it seems like the long way around if you have a Debian system there.
-"""]]
diff --git a/doc/install/cabal/comment_13_3dac019cda71bf99878c0a1d9382323b._comment b/doc/install/cabal/comment_13_3dac019cda71bf99878c0a1d9382323b._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_13_3dac019cda71bf99878c0a1d9382323b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"
- nickname="Gregor"
- subject="TonidoPlug"
- date="2013-08-09T17:46:28Z"
- content="""
-@Joey Thanks for the answer. I didn't want to mess around too much with the TonidoPlug. I am currently setting up a raspberry pi, which works fine. 
-"""]]
diff --git a/doc/install/cabal/comment_14_14b46470593f84f8c3768a91cb77bdab._comment b/doc/install/cabal/comment_14_14b46470593f84f8c3768a91cb77bdab._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_14_14b46470593f84f8c3768a91cb77bdab._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlfIVXjkzrYE9qJAO2A0H7K6tKGMaSgc3U"
- nickname="Daniel"
- subject="Problems with cryptocipher"
- date="2013-08-22T01:36:50Z"
- content="""
-I had problems following these directions on recent releases of Fedora/Ubuntu. The install attempts failed on cryptocipher-0.3.1, which I think came as a dependency of Yesod.
-I was able to work around this by installing yesod-platform with cabal first, then installing git-annex.
-"""]]
diff --git a/doc/install/cabal/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment b/doc/install/cabal/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="77.247.181.162"
- subject="git-annex assistant on Arm"
- date="2013-08-23T03:07:11Z"
- content="""
-I'd like to use the assistant's power on a Raspberry Pi to build an always-on file/sync server. Is there a way to get the assistant running on Arm? I know there's a Debian package, but it's Version 3.20120629 and comes without the assistant. Has anyone ever successfully built a recent git-annex version on Arm? What would I need in order to do it myself? 
-"""]]
diff --git a/doc/install/cabal/comment_16_4faf214f97f9516898d7c17d743ef825._comment b/doc/install/cabal/comment_16_4faf214f97f9516898d7c17d743ef825._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_16_4faf214f97f9516898d7c17d743ef825._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.63"
- subject="comment 16"
- date="2013-08-23T17:37:52Z"
- content="""
-The git-annex assistant can easily be built on arm. But not the webapp. It's entirely possible to use the assistant without the webapp though; you just have to make the git repository and configure the remotes by hand, and then the assistant will sync them the same way the webapp does.
-
-It is possible but very involved to build the webapp for arm. I do not anticipate doing it in the Debian package until ghc gets proper template haskell support for arm. See [[forum/Webapp_on_ARM]]
-"""]]
diff --git a/doc/install/cabal/comment_17_2a9d6807a3a13815c824985521757167._comment b/doc/install/cabal/comment_17_2a9d6807a3a13815c824985521757167._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_17_2a9d6807a3a13815c824985521757167._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="77.247.181.162"
- subject="comment 17"
- date="2013-08-23T18:51:51Z"
- content="""
-Thanks for the quick answer. I will try to build git-annex with just the assistant, as you suggest, and once it works set up the server by hand as you suggest. 
-
-BTW: Awesome job you're doing with git-annex. I appreciate your enthusiasm.
-"""]]
diff --git a/doc/install/cabal/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment b/doc/install/cabal/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="96.47.226.20"
- subject="git-annex assistant for the Raspberry Pi"
- date="2013-09-04T03:58:37Z"
- content="""
-It took a while and a few tries, but I finally built the git-annex binary including the assistant on a Raspberry Pi. The build comes without the flags webapp, webdav, and dbus as these rely on a Template Haskell compiler that hasn't been ported to Arm architecture yet. 
-
-I put the binary up on Github in case anyone's interested: <https://github.com/tradloff/git-annex-RPi>
-"""]]
diff --git a/doc/install/cabal/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment b/doc/install/cabal/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment
+++ /dev/null
@@ -1,44 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo"
- nickname="Nathan"
- subject="Cabal installing git-annex on Ubuntu 12.04 Precise with GHC 7.6.3"
- date="2013-09-25T22:39:04Z"
- content="""
-I now realize [there is a Ubuntu 12.04 Precise PPA with a current
-version of
-git-annex](http://git-annex.branchable.com/install/Ubuntu/), so that's
-probably a better choice, but here's how I cabal isntalled git-annex.
-
-1. Apt install non-cabal dependencies:
-
-       sudo aptitude install c2hs libgsasl7-dev libxml2-dev
-
-2. Manually cabal install yesod-platform to avoid the [cryptocipher problem 
-   mentioned above](
-   http://git-annex.branchable.com/install/cabal/#comment-1807da37dc144b572b76aaf4b574bb54):
-
-       cabal install yesod-platform
-
-3. Cabal install git-annex with DNS flag disabled:
-
-       cabal install git-annex -f\"-dns\"
-
-I was getting this error building git-annex before disabling the DNS flag:
-
-    Utility/SRV.hs:70:54:
-        Couldn't match expected type `Maybe
-                                        [(Int, Int, Integer, B8.ByteString)]'
-                    with actual type `Either
-                                        dns-1.0.0:Network.DNS.Internal.DNSError
-                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'
-        In the third argument of `maybe', namely `r'
-        In the second argument of `($)', namely
-          `maybe [] (orderHosts . map tohosts) r'
-        In a stmt of a 'do' block:
-          return $ maybe [] (orderHosts . map tohosts) r
-
-Looking at Utiltity/SRV.hs, it appears that disabling the DNS flag
-just makes git annex use a different DNS library (ADNS), not
-actually disable DNS lookups.
-
-"""]]
diff --git a/doc/install/cabal/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment b/doc/install/cabal/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlJemqsekZTC5dvc-MAByUWaBvsYE-mFUo"
- nickname="Gábor"
- subject="Cabal dependencies"
- date="2013-05-12T12:52:20Z"
- content="""
-After finishing the installation the cabal way, here are the packages I installed. It is possible that there are other packages I installed previously as dependency for other packages.
-
-    $ lsb_release -a
-    No LSB modules are available.
-    Distributor ID:	Ubuntu
-    Description:	Ubuntu 12.04.2 LTS
-    Release:	12.04
-    Codename:	precise
-    
-    $ apt-get install cabal-install libgnutls28-dev libgsasl7-dev c2hs libghc-libxml-sax-dev zlib1g-dev libghc-zlib-dev
-    $ cabal install git-annex --bindir=$HOME/bin
-"""]]
diff --git a/doc/install/cabal/comment_20_0f553be2a4c666e3bed58b2bce549406._comment b/doc/install/cabal/comment_20_0f553be2a4c666e3bed58b2bce549406._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_20_0f553be2a4c666e3bed58b2bce549406._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlkA6XinbeOdnEDxEGQUWyjqPGh0kdMXr4"
- nickname="Blake"
- subject="Updating git-annex via cabal"
- date="2013-10-09T21:21:22Z"
- content="""
-What is the best way to update git-annex and the dependencies via cabal? Just the `$ cabal install *` commands again?
-"""]]
diff --git a/doc/install/cabal/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment b/doc/install/cabal/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.4.22"
- subject="comment 21"
- date="2013-10-11T17:09:33Z"
- content="""
-If you run the \"cabal update\" command followed by the \"cabal install\" command it'll upgrade git-annex.
-"""]]
diff --git a/doc/install/cabal/comment_22_2f27b78215f97ade1986ca806c634cb3._comment b/doc/install/cabal/comment_22_2f27b78215f97ade1986ca806c634cb3._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_22_2f27b78215f97ade1986ca806c634cb3._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="96.44.189.100"
- subject="&quot;Could not find module Crypto.Hash&quot; error when building git-annex "
- date="2013-10-21T19:55:12Z"
- content="""
-Lately I get this error message when trying to build git-annex-v4.20131002:
-
-    Utility/Hash.hs:7:8:
-        Could not find module `Crypto.Hash'
-        Perhaps you meant
-    	  Crypto.HMAC (needs flag -package crypto-api-0.10.2)
-        Use -v to see a list of the files searched for.
-
-crypto-api-0.10.2 is installed as a debian dev package. All the dependencies are met. I have no idea what's going on.  
-"""]]
diff --git a/doc/install/cabal/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment b/doc/install/cabal/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="64.134.31.139"
- subject="comment 23"
- date="2013-10-21T22:09:05Z"
- content="""
-git-annex needs cryptohash version 0.10.0 or greater. You appear to have an old version. You can cabal `configure -f-CryptoHash` if it's for some reason failing to disable the cryptohash support despite the declared dependency not being met.
-"""]]
diff --git a/doc/install/cabal/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment b/doc/install/cabal/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="37.130.227.133"
- subject="comment 24"
- date="2013-10-22T17:55:32Z"
- content="""
-I fixed the error by installing a newer version of cryptohash. Thanks for pointing out the culprit. 
-"""]]
diff --git a/doc/install/cabal/comment_25_8a7664e6f9271718dc607a0782366c5b._comment b/doc/install/cabal/comment_25_8a7664e6f9271718dc607a0782366c5b._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_25_8a7664e6f9271718dc607a0782366c5b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="141.138.141.208"
- subject="Bad version on Hackage"
- date="2013-10-30T18:56:25Z"
- content="""
-Quick note: The latest version in the Hackage repository (git-annex-4.20131024) fails to build, due to a faulty version of Assistant/Threads/Cronner.hs. 
-"""]]
diff --git a/doc/install/cabal/comment_26_bd455c732639728bce2bfc39e32871d2._comment b/doc/install/cabal/comment_26_bd455c732639728bce2bfc39e32871d2._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_26_bd455c732639728bce2bfc39e32871d2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.47"
- subject="comment 26"
- date="2013-11-01T16:33:25Z"
- content="""
-@RaspberryPie that only affected builds without the webapp, in any case it's fixed now.
-"""]]
diff --git a/doc/install/cabal/comment_27_c080e9239b6eec88d329c28da7bb4141._comment b/doc/install/cabal/comment_27_c080e9239b6eec88d329c28da7bb4141._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_27_c080e9239b6eec88d329c28da7bb4141._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="37.221.160.203"
- subject="comment 27"
- date="2013-11-02T12:52:18Z"
- content="""
-Okay, the error doesn't show up anymore. I didn't even get to Cronner though, because this time I got a different error:
-
-    Assistant/Alert.hs:195:20:
-        Couldn't match expected type `Assistant ()' with actual type `()'
-        Expected type: Maybe Remote -> Assistant ()
-          Actual type: Maybe Remote -> ()
-        In the expression: noop
-        In an equation for `notFsckedNudge': notFsckedNudge _ = noop
-
-This is from trying to compile 4.20131101 with `-f\"-webapp -webdav\"`
-"""]]
diff --git a/doc/install/cabal/comment_28_15951dd070a675300420eea137a28ef9._comment b/doc/install/cabal/comment_28_15951dd070a675300420eea137a28ef9._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_28_15951dd070a675300420eea137a28ef9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.47"
- subject="comment 28"
- date="2013-11-02T17:40:18Z"
- content="""
-Unfortunate about that. I've fixed it in git.
-
-(It would be best to file bug reports about build failures to avoid cluttering up this page.)
-"""]]
diff --git a/doc/install/cabal/comment_29_ac082dca67f4a29b06070c0283130f52._comment b/doc/install/cabal/comment_29_ac082dca67f4a29b06070c0283130f52._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_29_ac082dca67f4a29b06070c0283130f52._comment
+++ /dev/null
@@ -1,39 +0,0 @@
-[[!comment format=mdwn
- username="robohack"
- ip="24.67.98.78"
- subject="cabal install failing due to problems building pcre-light-0.4"
- date="2013-11-21T20:17:10Z"
- content="""
-After a fresh install of Haskell, and following the instructions above, I end up with the following rather bizarre and unexpected problem:
-
-	$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
-	Resolving dependencies...
-	Configuring pcre-light-0.4...
-	Building pcre-light-0.4...
-	Preprocessing library pcre-light-0.4...
-	Base.hsc:103:18: error: pcre.h: No such file or directory
-	Base.hsc: In function ‘main’:
-	Base.hsc:402: error: ‘PCRE_ANCHORED’ undeclared (first use in this function)
-	Base.hsc:402: error: (Each undeclared identifier is reported only once
-	Base.hsc:402: error: for each function it appears in.)
-	Base.hsc:405: error: ‘PCRE_AUTO_CALLOUT’ undeclared (first use in this function)
-
-(followed by an error for every other macro that was expected to be defined in the header...)
-
-	compiling dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c failed (exit code 1)
-	command was: /usr/bin/gcc -c dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c -o dist/build/Text/Regex/PCRE/Light/Base_hsc_make.o -m64 -fno-stack-protector -m64 -fno-stack-protector -m64 -D__GLASGOW_HASKELL__=700 -Ddarwin_BUILD_OS -Ddarwin_HOST_OS -Dx86_64_BUILD_ARCH -Dx86_64_HOST_ARCH -I/sw/lib/ghc-7.0.4/bytestring-0.9.1.10/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/base-4.3.1.0/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include/
-	Failed to install pcre-light-0.4
-	cabal: Error: some packages failed to install:
-	git-annex-3.20120230 depends on pcre-light-0.4 which failed to install.
-	pcre-light-0.4 failed during the building phase. The exception was:
-	ExitFailure 1
-
-This is a somewhat older Mac OS X 10.6.8 system.
-
-I do have PCRE already installed via Fink, and pcre.h is in /sw/include.  I see other -I/sw/... things in the compile command above, but obviously /sw/include is not one of them.
-
-Any clues for me?
-
-(Why the heck does git-annex need pcre in particular anyway???  I saw another regex library get installed earlier somewhere in this (massive) process.)
-
-"""]]
diff --git a/doc/install/cabal/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment b/doc/install/cabal/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="E: Unable to locate package libghc-libxml-sax-dev"
- date="2013-05-30T15:05:47Z"
- content="""
-I get an error from the command as above:
-$ sudo apt-get install cabal-install libgnutls28-dev libgsasl7-dev c2hs libghc libxml-sax-dev zlib1g-dev libghc-zlib-dev
-
-$ lsb_release -a
-No LSB modules are available.
-Distributor ID:	Ubuntu
-Description:	Ubuntu 12.04.2 LTS
-Release:	12.04
-Codename:	precise
-
-"""]]
diff --git a/doc/install/cabal/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment b/doc/install/cabal/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment
+++ /dev/null
@@ -1,35 +0,0 @@
-[[!comment format=mdwn
- username="robohack"
- ip="24.67.98.78"
- subject="hmmm... ok, the PCRE problem was odd, but now this:"
- date="2013-11-21T20:30:54Z"
- content="""
-The PCRE problem is solved trivially in my case with a couple more cabal install options, though the need for these seems oddly dissatisfying given the reams of other stuff that was successfully built and installed without these options.
-
-Now however I seem to have encountered a deeper problem:
-
-	$ cabal install git-annex --bindir=$HOME/bin --extra-include-dirs=/sw/include --extra-lib-dirs=/sw/lib               
-	Resolving dependencies...
-	[1 of 1] Compiling Main             ( /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/Setup.hs, /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/Main.o )
-	Linking /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/setup ...
-	hsc2hs Utility/StatFS.hsc
-	perl -i -pe 's/^{-# INCLUDE.*//' Utility/StatFS.hs
-	ghc -O2 -Wall -ignore-package monads-fd --make configure
-	
-	Utility/StatFS.hsc:54:8:
-	    Could not find module `GHC.Foreign':
-	      Use -v to see a list of the files searched for.
-	make: *** [Build/SysConfig.hs] Error 1
-	Configuring git-annex-3.20120230...
-	Building git-annex-3.20120230...
-	Preprocessing executable 'git-annex' for git-annex-3.20120230...
-	
-	Git/Version.hs:11:18:
-	    Could not find module `Build.SysConfig':
-	      Use -v to see a list of the files searched for.
-	Failed to install git-annex-3.20120230
-	cabal: Error: some packages failed to install:
-	git-annex-3.20120230 failed during the building phase. The exception was:
-	ExitFailure 1
-
-"""]]
diff --git a/doc/install/cabal/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment b/doc/install/cabal/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="robohack"
- ip="24.67.98.78"
- subject="a different error trying to build from the git repo...."
- date="2013-11-21T21:14:54Z"
- content="""
-I'm using the ghc7.0 branch because Fink's GHC is still at 7.0.4....
-
-	$ cabal build                                
-	Building git-annex-3.20120523...
-	Preprocessing executable 'git-annex' for git-annex-3.20120523...
-	[ 78 of 163] Compiling Utility.Url      ( Utility/Url.hs, dist/build/git-annex/git-annex-tmp/Utility/Url.o )
-	
-	Utility/Url.hs:111:88:
-	    Couldn't match expected type `Maybe URI' with actual type `URI'
-	    In the second argument of `fromMaybe', namely
-	      `(newURI `relativeTo` u)'
-	    In the expression: fromMaybe newURI (newURI `relativeTo` u)
-	    In an equation for `newURI_abs':
-	        newURI_abs = fromMaybe newURI (newURI `relativeTo` u)
-
-"""]]
diff --git a/doc/install/cabal/comment_32_1d34c294486c85b1149675fa5861ae35._comment b/doc/install/cabal/comment_32_1d34c294486c85b1149675fa5861ae35._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_32_1d34c294486c85b1149675fa5861ae35._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.64"
- subject="comment 32"
- date="2013-11-22T16:27:36Z"
- content="""
-@robohack, the ghc7.0 branch is not being maintained, and is so old I don't recommend it. To build it against current cabal you will probably need to version its dependency on network to an older version than 2.4.0. 
-
-Also, git-annex has not depended on pcre for a long time. But you're building thoroughly old version so get to trip over every bug that's been reported for the past 2 years..
-"""]]
diff --git a/doc/install/cabal/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment b/doc/install/cabal/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn3p4i4lk_zMilvjnJ9sS6g2nerpgz0Fjc"
- nickname="Matthias"
- subject="Build failure"
- date="2014-03-20T09:10:44Z"
- content="""
-I followed the instructions and the invocation of
-
-    cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
-
-resulted in the following error:
-
-    Test.hs:107:41: Not in scope: `errMessage'
-    Failed to install git-annex-5.20140306
-    cabal: Error: some packages failed to install:
-    git-annex-5.20140306 failed during the building phase. The exception was:
-    ExitFailure 1
-
-I used the Haskell Platform for Mac OS X (10.8)
-
-"""]]
diff --git a/doc/install/cabal/comment_34_38451e751add6daf479b559c4b6a7c61._comment b/doc/install/cabal/comment_34_38451e751add6daf479b559c4b6a7c61._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_34_38451e751add6daf479b559c4b6a7c61._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://openid.stackexchange.com/user/a05bb829-932b-49f2-85a9-00dcda8b5e20"
- nickname="Christian Pietsch"
- subject="Re: Build failure"
- date="2014-03-20T13:56:16Z"
- content="""
-I get exactly the same error message as Matthias when attempting the minimal Cabal install on openSUSE 12.2 (x86_64) Linux.
-"""]]
diff --git a/doc/install/cabal/comment_35_4d44e4531e6686bd340f26836ad40026._comment b/doc/install/cabal/comment_35_4d44e4531e6686bd340f26836ad40026._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_35_4d44e4531e6686bd340f26836ad40026._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.102"
- subject="comment 35"
- date="2014-03-20T16:06:22Z"
- content="""
-The `errMessage` build failure is due to a new version of optparse-applicative. I've added support for it in git master.
-"""]]
diff --git a/doc/install/cabal/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment b/doc/install/cabal/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkNcHu5T1Pxzl-r2co9vf6SxXYWubv2P04"
- nickname="Matthew"
- subject="I did indeed get problems on Ubuntu 13.04"
- date="2014-06-25T01:01:43Z"
- content="""
-The issues I had were version mismatches when resolving dependencies of git-annex.
-
-It seems that when you install haskell-platform package with apt-get, it installs a bunch of haskell dependencies as apt packages, yet those aren't needed for any other system packages.  So some people here who complain about version mismatches might not have intended to install any Haskell libraries with apt, they just come along for the ride by default.
-
-I can't remember the exact ones, but I ended up uninstalling some of the stuff that gets auto-installed along with haskell-platform, and using cabal to build those.  Then all the git-annex dependencies worked.
-
-Why 13.04 in this day and age?  Using Zentyal as a home server/gateway, and it currently runs on 13.04.
-
-This method might not work if you installed other apt packages that _do_ need those apt-based Haskell libraries.   But if git-annex is all you need that uses the Haskell platform, might work.
-"""]]
diff --git a/doc/install/cabal/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment b/doc/install/cabal/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment
+++ /dev/null
@@ -1,69 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmveNWaFIL1zEehHr_0416bKBzsul5tGlE"
- nickname="Daniel"
- subject="Install fails horribly"
- date="2014-07-10T23:11:51Z"
- content="""
-```
-lyriondesktop:/home/zilti/tmp # cabal install c2hs
-Resolving dependencies...
-Configuring c2hs-0.17.2...
-Building c2hs-0.17.2...
-Preprocessing executable 'c2hs' for c2hs-0.17.2...
-[ 1 of 26] Compiling Data.DLists      ( src/Data/DLists.hs, dist/build/c2hs/c2hs-tmp/Data/DLists.o )
-[ 2 of 26] Compiling Control.StateTrans ( src/Control/StateTrans.hs, dist/build/c2hs/c2hs-tmp/Control/StateTrans.o )
-
-src/Control/StateTrans.hs:77:1: Warning:
-    Module `Prelude' does not export `catch'
-[ 3 of 26] Compiling Data.Errors      ( src/Data/Errors.hs, dist/build/c2hs/c2hs-tmp/Data/Errors.o )
-[ 4 of 26] Compiling Data.Attributes  ( src/Data/Attributes.hs, dist/build/c2hs/c2hs-tmp/Data/Attributes.o )
-[ 5 of 26] Compiling Text.Lexers      ( src/Text/Lexers.hs, dist/build/c2hs/c2hs-tmp/Text/Lexers.o )
-[ 6 of 26] Compiling Control.StateBase ( src/Control/StateBase.hs, dist/build/c2hs/c2hs-tmp/Control/StateBase.o )
-[ 7 of 26] Compiling Data.NameSpaces  ( src/Data/NameSpaces.hs, dist/build/c2hs/c2hs-tmp/Data/NameSpaces.o )
-[ 8 of 26] Compiling C2HS.C.Attrs     ( src/C2HS/C/Attrs.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Attrs.o )
-[ 9 of 26] Compiling C2HS.C.Builtin   ( src/C2HS/C/Builtin.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Builtin.o )
-[10 of 26] Compiling Paths_c2hs       ( dist/build/autogen/Paths_c2hs.hs, dist/build/c2hs/c2hs-tmp/Paths_c2hs.o )
-[11 of 26] Compiling C2HS.Config      ( src/C2HS/Config.hs, dist/build/c2hs/c2hs-tmp/C2HS/Config.o )
-[12 of 26] Compiling C2HS.Switches    ( src/C2HS/Switches.hs, dist/build/c2hs/c2hs-tmp/C2HS/Switches.o )
-[13 of 26] Compiling C2HS.Version     ( src/C2HS/Version.hs, dist/build/c2hs/c2hs-tmp/C2HS/Version.o )
-[14 of 26] Compiling System.CIO       ( src/System/CIO.hs, dist/build/c2hs/c2hs-tmp/System/CIO.o )
-[15 of 26] Compiling Control.State    ( src/Control/State.hs, dist/build/c2hs/c2hs-tmp/Control/State.o )
-[16 of 26] Compiling C2HS.State       ( src/C2HS/State.hs, dist/build/c2hs/c2hs-tmp/C2HS/State.o )
-[17 of 26] Compiling C2HS.CHS.Lexer   ( src/C2HS/CHS/Lexer.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS/Lexer.o )
-
-src/C2HS/CHS/Lexer.hs:612:16: Warning:
-    Defined but not used: `lexeme'
-[18 of 26] Compiling C2HS.CHS         ( src/C2HS/CHS.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS.o )
-[19 of 26] Compiling C2HS.Gen.Header  ( src/C2HS/Gen/Header.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Header.o )
-[20 of 26] Compiling C2HS.C.Trav      ( src/C2HS/C/Trav.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Trav.o )
-[21 of 26] Compiling C2HS.C.Names     ( src/C2HS/C/Names.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Names.o )
-[22 of 26] Compiling C2HS.C           ( src/C2HS/C.hs, dist/build/c2hs/c2hs-tmp/C2HS/C.o )
-[23 of 26] Compiling C2HS.Gen.Monad   ( src/C2HS/Gen/Monad.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Monad.o )
-
-src/C2HS/Gen/Monad.hs:227:10: Warning:
-    Orphan instance: instance Read Ident
-[24 of 26] Compiling C2HS.C.Info      ( src/C2HS/C/Info.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Info.o )
-[25 of 26] Compiling C2HS.Gen.Bind    ( src/C2HS/Gen/Bind.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Bind.o )
-
-src/C2HS/Gen/Bind.hs:971:43: Warning:
-    In the use of `posColumn' (imported from Language.C.Data.Position):
-    Deprecated: \"column number information is inaccurate in presence of macros - do not rely on it.\"
-
-src/C2HS/Gen/Bind.hs:789:10: Warning:
-    Orphan instance: instance Num CInteger
-[26 of 26] Compiling Main             ( src/Main.hs, dist/build/c2hs/c2hs-tmp/Main.o )
-Linking dist/build/c2hs/c2hs ...
-Installing executable(s) in /root/.cabal/bin
-Installed c2hs-0.17.2
-lyriondesktop:/home/zilti/tmp # cabal install git-annex
-Resolving dependencies...
-Configuring gnuidn-0.2.1...
-cabal: The program c2hs is required but it could not be found.
-Failed to install gnuidn-0.2.1
-cabal: Error: some packages failed to install:
-git-annex-5.20140709 depends on gnuidn-0.2.1 which failed to install.
-gnuidn-0.2.1 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
-```
-"""]]
diff --git a/doc/install/cabal/comment_38_5c1e96221154a4ae4ebd636232044ced._comment b/doc/install/cabal/comment_38_5c1e96221154a4ae4ebd636232044ced._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_38_5c1e96221154a4ae4ebd636232044ced._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.2"
- subject="comment 38"
- date="2014-07-11T18:30:55Z"
- content="""
-@Daniel, I suggest you either follow the instuctions above, or if you don't want to follow the instructions, follow the error messages. :P In this case, the instructions say to do:
-
-> PATH=$HOME/bin:$PATH
-> cabal install c2hs --bindir=$HOME/bin
-
-Which is exactly to work around the problem that we can see in your transcript: `Installing executable(s) in /root/.cabal/bin` 
-
-Also, to reiterate the top of the page: If you are not comfortable tracking down and dealing with library build problems, installing git-annex with cabal is probably not the right choice for you!
-
-"""]]
diff --git a/doc/install/cabal/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment b/doc/install/cabal/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkftzaCvV7EDKVDfJhsQZ3E1Vn-0db516w"
- nickname="Edward"
- subject="GHC 7.8 Issue"
- date="2014-08-20T20:06:01Z"
- content="""
-Just an FYI: I tried to \"cabal install --only-dependencies\" with GHC 7.8 and it fails because DAV-1.0.1 is pulling in lens-3.10.3 which is not compatible with GHC 7.8 due to changes in Typeable. 
-
-I don't have enough experience with cabal to figure out why it's not trying to use a newer version of lens.
-"""]]
diff --git a/doc/install/cabal/comment_3_55bed050bdb768543dbe1b86edec057d._comment b/doc/install/cabal/comment_3_55bed050bdb768543dbe1b86edec057d._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_3_55bed050bdb768543dbe1b86edec057d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 3"
- date="2013-05-30T15:25:29Z"
- content="""
-If you're installing git-annex with cabal, there is no need to install any haskell library packages with apt-get. That includes libghc-libxml-sax-dev and libghc-zlib-dev. Without those, the apt-get line may work to install the C libraries needed for cabal to install the haskell libraries. 
-
-However, see the the [[Ubuntu]] page for much easier ways to get git-annex installed.
-"""]]
diff --git a/doc/install/cabal/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment b/doc/install/cabal/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Re: Comment 3"
- date="2013-05-30T15:48:44Z"
- content="""
-@Joey Many thanks.
-I am new to Haskell (vaguely looked at it with DARCS) and git-annex.
-After installing with apt-get on Ubuntu 12.04 LTS I found webapp was missing, hence have come here.
-I am going through the correct steps now, it should be awesome when done.
-
-This seems to be a long build process (still going on my old laptop, much longer than apt-get).
-Ubuntu git-annex packages from 13.10 Saucy I think are updated to include webapp.
-"""]]
diff --git a/doc/install/cabal/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment b/doc/install/cabal/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Re: Comment 3"
- date="2013-05-30T16:29:12Z"
- content="""
-At the end of the build I got these errors:
-Registering yesod-static-1.1.2.3...
-Installing library in /home/nrb/.cabal/lib/yesod-static-1.1.2.3/ghc-7.4.1
-Registering yesod-static-1.1.2.3...
-cabal: Error: some packages failed to install:
-c2hs-0.16.4 depends on language-c-0.3.2.1 which failed to install.
-dbus-0.10.4 depends on libxml-sax-0.7.4 which failed to install.
-git-annex-4.20130521.2 depends on libxml-sax-0.7.4 which failed to install.
-language-c-0.3.2.1 failed during the configure step. The exception was:
-ExitFailure 1
-libxml-sax-0.7.4 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to
-install.
-
-One way I could fix this myself is to put together a VM with 13.10 or Debian in it and work inside that.
-Or if I can get help to fix my issues here that would be great ;)
-"""]]
diff --git a/doc/install/cabal/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment b/doc/install/cabal/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Some errors after the build"
- date="2013-05-30T16:38:37Z"
- content="""
-    Registering yesod-static-1.1.2.3...
-    Installing library in /home/nrb/.cabal/lib/yesod-static-1.1.2.3/ghc-7.4.1
-    Registering yesod-static-1.1.2.3...
-    cabal: Error: some packages failed to install:
-    c2hs-0.16.4 depends on language-c-0.3.2.1 which failed to install.
-    dbus-0.10.4 depends on libxml-sax-0.7.4 which failed to install.
-    git-annex-4.20130521.2 depends on libxml-sax-0.7.4 which failed to install.
-    language-c-0.3.2.1 failed during the configure step. The exception was:
-    ExitFailure 1
-    libxml-sax-0.7.4 failed during the configure step. The exception was:
-    ExitFailure 1
-    network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to
-    install.
-
-"""]]
diff --git a/doc/install/cabal/comment_7_129c4f2e404c874e5adfa52902a81104._comment b/doc/install/cabal/comment_7_129c4f2e404c874e5adfa52902a81104._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_7_129c4f2e404c874e5adfa52902a81104._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="krig"
- ip="46.194.28.123"
- subject="Could not resolve dependencies for yesod"
- date="2013-06-25T06:14:18Z"
- content="""
-I'm having problems installing from cabal, and it seems related to yesod. I found an older discussion on something similar, where a constraint to require a newer version of yesod had been added, but I haven't figured out what was done to solve it.
-
-The problem seems to be that git-annex requires yesod < 1.2, but cabal is unable to install an older version.
-
-    $ cabal install git-annex --bindir=$HOME/bin
-    Resolving dependencies...
-    cabal: Could not resolve dependencies:
-    trying: git-annex-4.20130601
-    trying: git-annex-4.20130601:+webapp
-    rejecting: yesod-1.2.1.1, 1.2.1, 1.2.0.1, 1.2.0 (conflict:
-    git-annex-4.20130601:webapp => yesod(<1.2))
-    trying: yesod-1.1.9.3
-    $
-
-From what I can tell, the problem is fixed in github master since yesod >= 1.2 is supported again.
-"""]]
diff --git a/doc/install/cabal/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment b/doc/install/cabal/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.193"
- subject="comment 8"
- date="2013-06-25T17:16:46Z"
- content="""
-git-annex 4.20130621 once again builds with the current version of yesod.
-"""]]
diff --git a/doc/install/cabal/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment b/doc/install/cabal/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment
deleted file mode 100644
--- a/doc/install/cabal/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl7dGdYtCHb7xleEOp6n8yaUQ4UtaiAEEs"
- nickname="Henning"
- subject="libxml-sax Error on OS X fresh install"
- date="2013-07-27T13:11:23Z"
- content="""
-I had - maybe the same problem as Nigel - with ExitFailure 1 libxml-sax-0.7.4 .
-
-I could fix this by forcing the link of libxml2 package with \"brew link libxml2 --force\". Maybe you should update your guide. I had this problem on 2 different machines running both the current versions of OS X.
-
-After this the build finished successfull. Maybe this helps.
-"""]]
diff --git a/doc/install/fromscratch.mdwn b/doc/install/fromscratch.mdwn
deleted file mode 100644
--- a/doc/install/fromscratch.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-To install git-annex from scratch, you need a lot of stuff. Really
-quite a lot.
-
-* Haskell stuff
-  * [The Haskell Platform](http://haskell.org/platform/) (GHC 7.4 or newer)
-  * A ton of haskell libraries. Rather than try to list them all here,
-    see git-annex.cabal. Probably the easiest way to install them:
-    `cabal update; cabal install git-annex --only-dependencies`
-* Shell commands
-  * [git](http://git-scm.com/) (1.7.2 or newer; 1.8.5 or newer recommended)
-  * [xargs](http://savannah.gnu.org/projects/findutils/)
-  * [rsync](http://rsync.samba.org/)
-  * [curl](http://http://curl.haxx.se/) (optional, but recommended)
-  * [wget](http://www.gnu.org/software/wget/) (optional)
-  * [sha*sum](ftp://ftp.gnu.org/gnu/coreutils/) (optional)
-  * [gpg](http://gnupg.org/) (optional; needed for encryption)
-  * [lsof](ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/)
-    (optional; recommended for watch mode)
-  * [gcrypt](https://github.com/joeyh/git-remote-gcrypt)
-    (optional)
-  * [nocache](https://github.com/Feh/nocache)
-    (optional)
-  * multicast DNS support, provided on linux by [nss-mdns](http://www.0pointer.de/lennart/projects/nss-mdns/)
-    (optional; recommended for the assistant to support pairing well)
-  * [ikiwiki](http://ikiwiki.info) (optional; used to build the docs)
-
-Then just [[download]] git-annex and run: `make; make install`
diff --git a/doc/install/fromscratch/comment_1_9d085e460553fa045999ab7cb945cdec._comment b/doc/install/fromscratch/comment_1_9d085e460553fa045999ab7cb945cdec._comment
deleted file mode 100644
--- a/doc/install/fromscratch/comment_1_9d085e460553fa045999ab7cb945cdec._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="azul"
- ip="91.36.153.149"
- subject="cabal fails to resolve dependencies"
- date="2014-06-19T08:49:05Z"
- content="""
-I tried this on ubuntu 14.04 without any previous haskell installs and cabal failed to resolve the dependencies:
-
-rejecting: optparse-applicative-0.9.0 (conflict: hjsmin =>
-optparse-applicative>=0.7 && <0.9)
-
-[full log](paste.debian.net/105771/)
-"""]]
diff --git a/doc/install/fromscratch/comment_2_b7954521d9ab40622b665f278dd72e17._comment b/doc/install/fromscratch/comment_2_b7954521d9ab40622b665f278dd72e17._comment
deleted file mode 100644
--- a/doc/install/fromscratch/comment_2_b7954521d9ab40622b665f278dd72e17._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="azul"
- ip="91.36.173.120"
- subject="conflict solved"
- date="2014-06-20T06:13:09Z"
- content="""
-`apt-get install happy alex libghc-hjsmin-dev`
-solved the problem for me. The hjsmin lib was probably crucial. It seems a bunch of dependencies can also be installed as debs rather than through cabal.
-`standalone/android/buildchroot-inchroot` gave me a clue.
-"""]]
diff --git a/doc/install/fromscratch/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment b/doc/install/fromscratch/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment
deleted file mode 100644
--- a/doc/install/fromscratch/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment
+++ /dev/null
@@ -1,23 +0,0 @@
-[[!comment format=mdwn
- username="azul"
- ip="91.36.173.120"
- subject="c2hs required for cabal to install dependencies"
- date="2014-06-20T06:35:35Z"
- content="""
-Next thing i ran into was missing c2hs.
-So
-`apt-get install c2hs` before running the cabal install otherwise...
-
-<pre>
-$ cabal install git-annex --only-dependencies
-Resolving dependencies...
-Configuring gnuidn-0.2.1...
-cabal: The program c2hs is required but it could not be found.
-Failed to install gnuidn-0.2.1
-cabal: Error: some packages failed to install:
-gnuidn-0.2.1 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
-</pre>
-
-"""]]
diff --git a/doc/install/fromscratch/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment b/doc/install/fromscratch/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment
deleted file mode 100644
--- a/doc/install/fromscratch/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment
+++ /dev/null
@@ -1,37 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawld54zdyk6b0W4jXnssSO_j2Nn3W1uVsUE"
- nickname="Paul"
- subject="comment 4"
- date="2014-08-24T11:53:11Z"
- content="""
-@azul, thanks for hints, but it still fails. No wonders though - this is Haskell, kids.
-
-~~~~
-$ cabal install git-annex --only-dependencies
-Resolving dependencies...
-cabal: Could not resolve dependencies:
-trying: git-annex-5.20140817
-trying: git-annex-5.20140817:+webapp
-trying: git-annex-5.20140817:+s3
-trying: git-annex-5.20140817:+dns
-trying: dns-1.4.3
-trying: yesod-1.2.6.1
-trying: yesod-auth-1.3.4.2
-trying: http-client-0.3.7.1
-trying: http-client-0.3.7.1:+network-uri
-trying: hS3-0.5.8
-trying: hxt-9.3.1.6
-trying: hxt-9.3.1.6:-network-uri
-rejecting: network-2.6.0.1, 2.6.0.0 (conflict: hxt-9.3.1.6:network-uri =>
-network>=2.4 && <2.6)
-rejecting: network-2.5.0.0, 2.4.2.3, 2.4.2.2, 2.4.2.1, 2.4.2.0, 2.4.1.2,
-2.4.1.1, 2.4.1.0, 2.4.0.1, 2.4.0.0, 2.3.2.0, 2.3.1.1, 2.3.1.0, 2.3.0.14,
-2.3.0.13, 2.3.0.12, 2.3.0.11, 2.3.0.10, 2.3.0.9, 2.3.0.8, 2.3.0.7, 2.3.0.6,
-2.3.0.5, 2.3.0.4, 2.3.0.3, 2.3.0.2, 2.3.0.1, 2.3 (conflict:
-http-client-0.3.7.1:network-uri => network>=2.6)
-rejecting: network-2.2.3.1, 2.2.3, 2.2.1.10, 2.2.1.9, 2.2.1.8, 2.2.1.7,
-2.2.1.6, 2.2.1.5, 2.2.1.4, 2.2.1.3, 2.2.1.2, 2.2.1.1, 2.2.1, 2.2.0.1, 2.2.0.0,
-2.1.0.0, 2.0 (conflict: dns => network>=2.3)
-~~~~
-
-"""]]
diff --git a/doc/install/fromsource.mdwn b/doc/install/fromsource.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource.mdwn
@@ -0,0 +1,74 @@
+So you want to build git-annex from source. This is encouraged for
+users with experience building code from source. But the build may
+require some care and feeding. This page will start with the easy
+methods and work up to the harder ones.
+
+## prerequisites
+
+Start by installing the 
+[Haskell Platform](http://hackage.haskell.org/platform/).
+
+In Debian, this is as simple as:
+
+	sudo apt-get install haskell-platform
+
+## downloading the source code
+
+The easiest way is using git; see [[download]] or just:
+
+	git clone git://git-annex.branchable.com/ git-annex
+
+Or, you can use cabal to get the source code:
+
+	cabal update; cabal unpack git-annex
+
+## building from source on Debian
+
+This is the method used by git-annex's author, and so it's the one most
+likely to work without problems.
+
+First, install everything git-annex needs to build:
+
+	sudo apt-get build-dep git-annex
+
+Now you can build git-annex by running either `make` or `cabal build`
+inside the source tree.
+
+## minimal build with cabal
+
+This can be done anywhere, and builds git-annex without some features that
+require C libraries, that can be harder to get installed. This is plenty to
+get started using it, although it does not include the assistant or webapp.
+
+Inside the source tree, run:
+
+	cabal configure -f"-assistant -webapp -webdav -pairing -xmpp -dns"
+	cabal install --only-dependencies
+	cabal build
+	PATH=$HOME/bin:$PATH
+	cabal install --bindir=$HOME/bin
+
+Be warned that this involves building a lot of Haskell libraries from
+source, and so it has a lot of moving parts, and it's not uncommon for it
+to be broken from time to time.
+
+## full build with cabal
+
+To build with all features enabled, including the assistant and webapp,
+you will need to install several C libraries and their headers,
+including libgnutls, libgsasl, libxml2, and zlib. How to do that for
+your OS is beyond the scope of this page. 
+
+Once the C libraries are installed, run inside the source tree:
+
+	cabal configure
+	cabal install --only-dependencies
+	cabal build
+	PATH=$HOME/bin:$PATH
+	cabal install --bindir=$HOME/bin
+
+## EKG
+
+When building with cabal, you can optionally enable the 
+[[EKG monitoring interface|ekg]]. This is great for debugging resource
+usage problems. Just pass `-f+EKG` to `cabal configure`
diff --git a/doc/install/fromsource/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment b/doc/install/fromsource/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="4.152.246.110"
+ subject="comment 10"
+ date="2013-07-27T17:49:07Z"
+ content="""
+@Henning; see the [[OSX]] page for full installation instructions for OSX. Which include all the neccesary brew incantations.
+"""]]
diff --git a/doc/install/fromsource/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment b/doc/install/fromsource/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment
@@ -0,0 +1,44 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"
+ nickname="Gregor"
+ subject="Installation on tonidoplug"
+ date="2013-08-03T07:19:54Z"
+ content="""
+I tried various ways to install git-annex on my [TonidoPlug](http://www.tonidoplug.com/).
+
+System Info:
+
+	root@TonidoPlug2:~# uname -a
+	Linux TonidoPlug2 2.6.31.8-topkick1281p2-001-004-20101214 #1 Thu Jun 16 10:06:20 CST 2011 armv5tel GNU/Linux
+
+`apt-get` didn't work.
+
+	root@TonidoPlug2:~# apt-get install git-annex
+	Reading package lists... Done
+	Building dependency tree       
+	Reading state information... Done
+	E: Unable to locate package git-annex
+
+The Linux standalone installation results in an error message like this, when calling `git-annex` (or `git annex`)
+
+	~$ git-annex.linux/git-annex
+	/home/gitolite/git-annex.linux/bin/git-annex: 1: Syntax error: \")\" unexpected
+
+(git-annex.linux/bin/git-annex is a binary file and works fine on other distros)
+
+When installing with cabal, I get the error message (tried as root and gitolite user)
+
+	~$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
+	Resolving dependencies...
+	cabal: cannot configure git-annex-4.20130802. It requires base >=4.5 && <4.8
+	For the dependency on base >=4.5 && <4.8 there are these packages:
+	base-4.5.0.0, base-4.5.1.0, base-4.6.0.0 and base-4.6.0.1. However none of
+	them are available.
+	base-4.5.0.0 was excluded because of the top level dependency base -any
+	base-4.5.1.0 was excluded because of the top level dependency base -any
+	base-4.6.0.0 was excluded because of the top level dependency base -any
+	base-4.6.0.1 was excluded because of the top level dependency base -any
+
+Any help is appreciated.
+Thanks for providing git-annex. I started cleaning up my backups with it yesterday and really like it.
+"""]]
diff --git a/doc/install/fromsource/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment b/doc/install/fromsource/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="2001:4978:f:21a::2"
+ subject="comment 12"
+ date="2013-08-07T16:31:30Z"
+ content="""
+The Linux standalone builds for i386 and amd64 will not work on Arm systems.
+
+There are builds of git-annex for arm in eg, Debian. You should be able to use one of those if this system is running Debian. You may need to upgrade to eg, Debian stable, which includes git-annex.
+
+It looks like you have an old and/or broken GHC compiler too. You could upgrade that to a newer version (eg from Debian stable) and build it that way, but it seems like the long way around if you have a Debian system there.
+"""]]
diff --git a/doc/install/fromsource/comment_13_3dac019cda71bf99878c0a1d9382323b._comment b/doc/install/fromsource/comment_13_3dac019cda71bf99878c0a1d9382323b._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_13_3dac019cda71bf99878c0a1d9382323b._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"
+ nickname="Gregor"
+ subject="TonidoPlug"
+ date="2013-08-09T17:46:28Z"
+ content="""
+@Joey Thanks for the answer. I didn't want to mess around too much with the TonidoPlug. I am currently setting up a raspberry pi, which works fine. 
+"""]]
diff --git a/doc/install/fromsource/comment_14_14b46470593f84f8c3768a91cb77bdab._comment b/doc/install/fromsource/comment_14_14b46470593f84f8c3768a91cb77bdab._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_14_14b46470593f84f8c3768a91cb77bdab._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlfIVXjkzrYE9qJAO2A0H7K6tKGMaSgc3U"
+ nickname="Daniel"
+ subject="Problems with cryptocipher"
+ date="2013-08-22T01:36:50Z"
+ content="""
+I had problems following these directions on recent releases of Fedora/Ubuntu. The install attempts failed on cryptocipher-0.3.1, which I think came as a dependency of Yesod.
+I was able to work around this by installing yesod-platform with cabal first, then installing git-annex.
+"""]]
diff --git a/doc/install/fromsource/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment b/doc/install/fromsource/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="RaspberryPie"
+ ip="77.247.181.162"
+ subject="git-annex assistant on Arm"
+ date="2013-08-23T03:07:11Z"
+ content="""
+I'd like to use the assistant's power on a Raspberry Pi to build an always-on file/sync server. Is there a way to get the assistant running on Arm? I know there's a Debian package, but it's Version 3.20120629 and comes without the assistant. Has anyone ever successfully built a recent git-annex version on Arm? What would I need in order to do it myself? 
+"""]]
diff --git a/doc/install/fromsource/comment_16_4faf214f97f9516898d7c17d743ef825._comment b/doc/install/fromsource/comment_16_4faf214f97f9516898d7c17d743ef825._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_16_4faf214f97f9516898d7c17d743ef825._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="4.154.0.63"
+ subject="comment 16"
+ date="2013-08-23T17:37:52Z"
+ content="""
+The git-annex assistant can easily be built on arm. But not the webapp. It's entirely possible to use the assistant without the webapp though; you just have to make the git repository and configure the remotes by hand, and then the assistant will sync them the same way the webapp does.
+
+It is possible but very involved to build the webapp for arm. I do not anticipate doing it in the Debian package until ghc gets proper template haskell support for arm. See [[forum/Webapp_on_ARM]]
+"""]]
diff --git a/doc/install/fromsource/comment_17_2a9d6807a3a13815c824985521757167._comment b/doc/install/fromsource/comment_17_2a9d6807a3a13815c824985521757167._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_17_2a9d6807a3a13815c824985521757167._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="RaspberryPie"
+ ip="77.247.181.162"
+ subject="comment 17"
+ date="2013-08-23T18:51:51Z"
+ content="""
+Thanks for the quick answer. I will try to build git-annex with just the assistant, as you suggest, and once it works set up the server by hand as you suggest. 
+
+BTW: Awesome job you're doing with git-annex. I appreciate your enthusiasm.
+"""]]
diff --git a/doc/install/fromsource/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment b/doc/install/fromsource/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="RaspberryPie"
+ ip="96.47.226.20"
+ subject="git-annex assistant for the Raspberry Pi"
+ date="2013-09-04T03:58:37Z"
+ content="""
+It took a while and a few tries, but I finally built the git-annex binary including the assistant on a Raspberry Pi. The build comes without the flags webapp, webdav, and dbus as these rely on a Template Haskell compiler that hasn't been ported to Arm architecture yet. 
+
+I put the binary up on Github in case anyone's interested: <https://github.com/tradloff/git-annex-RPi>
+"""]]
diff --git a/doc/install/fromsource/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment b/doc/install/fromsource/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment
@@ -0,0 +1,44 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo"
+ nickname="Nathan"
+ subject="Cabal installing git-annex on Ubuntu 12.04 Precise with GHC 7.6.3"
+ date="2013-09-25T22:39:04Z"
+ content="""
+I now realize [there is a Ubuntu 12.04 Precise PPA with a current
+version of
+git-annex](http://git-annex.branchable.com/install/Ubuntu/), so that's
+probably a better choice, but here's how I cabal isntalled git-annex.
+
+1. Apt install non-cabal dependencies:
+
+       sudo aptitude install c2hs libgsasl7-dev libxml2-dev
+
+2. Manually cabal install yesod-platform to avoid the [cryptocipher problem 
+   mentioned above](
+   http://git-annex.branchable.com/install/cabal/#comment-1807da37dc144b572b76aaf4b574bb54):
+
+       cabal install yesod-platform
+
+3. Cabal install git-annex with DNS flag disabled:
+
+       cabal install git-annex -f\"-dns\"
+
+I was getting this error building git-annex before disabling the DNS flag:
+
+    Utility/SRV.hs:70:54:
+        Couldn't match expected type `Maybe
+                                        [(Int, Int, Integer, B8.ByteString)]'
+                    with actual type `Either
+                                        dns-1.0.0:Network.DNS.Internal.DNSError
+                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'
+        In the third argument of `maybe', namely `r'
+        In the second argument of `($)', namely
+          `maybe [] (orderHosts . map tohosts) r'
+        In a stmt of a 'do' block:
+          return $ maybe [] (orderHosts . map tohosts) r
+
+Looking at Utiltity/SRV.hs, it appears that disabling the DNS flag
+just makes git annex use a different DNS library (ADNS), not
+actually disable DNS lookups.
+
+"""]]
diff --git a/doc/install/fromsource/comment_1_9d085e460553fa045999ab7cb945cdec._comment b/doc/install/fromsource/comment_1_9d085e460553fa045999ab7cb945cdec._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_1_9d085e460553fa045999ab7cb945cdec._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="azul"
+ ip="91.36.153.149"
+ subject="cabal fails to resolve dependencies"
+ date="2014-06-19T08:49:05Z"
+ content="""
+I tried this on ubuntu 14.04 without any previous haskell installs and cabal failed to resolve the dependencies:
+
+rejecting: optparse-applicative-0.9.0 (conflict: hjsmin =>
+optparse-applicative>=0.7 && <0.9)
+
+[full log](paste.debian.net/105771/)
+"""]]
diff --git a/doc/install/fromsource/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment b/doc/install/fromsource/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlJemqsekZTC5dvc-MAByUWaBvsYE-mFUo"
+ nickname="Gábor"
+ subject="Cabal dependencies"
+ date="2013-05-12T12:52:20Z"
+ content="""
+After finishing the installation the cabal way, here are the packages I installed. It is possible that there are other packages I installed previously as dependency for other packages.
+
+    $ lsb_release -a
+    No LSB modules are available.
+    Distributor ID:	Ubuntu
+    Description:	Ubuntu 12.04.2 LTS
+    Release:	12.04
+    Codename:	precise
+    
+    $ apt-get install cabal-install libgnutls28-dev libgsasl7-dev c2hs libghc-libxml-sax-dev zlib1g-dev libghc-zlib-dev
+    $ cabal install git-annex --bindir=$HOME/bin
+"""]]
diff --git a/doc/install/fromsource/comment_20_0f553be2a4c666e3bed58b2bce549406._comment b/doc/install/fromsource/comment_20_0f553be2a4c666e3bed58b2bce549406._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_20_0f553be2a4c666e3bed58b2bce549406._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlkA6XinbeOdnEDxEGQUWyjqPGh0kdMXr4"
+ nickname="Blake"
+ subject="Updating git-annex via cabal"
+ date="2013-10-09T21:21:22Z"
+ content="""
+What is the best way to update git-annex and the dependencies via cabal? Just the `$ cabal install *` commands again?
+"""]]
diff --git a/doc/install/fromsource/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment b/doc/install/fromsource/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="4.154.4.22"
+ subject="comment 21"
+ date="2013-10-11T17:09:33Z"
+ content="""
+If you run the \"cabal update\" command followed by the \"cabal install\" command it'll upgrade git-annex.
+"""]]
diff --git a/doc/install/fromsource/comment_22_2f27b78215f97ade1986ca806c634cb3._comment b/doc/install/fromsource/comment_22_2f27b78215f97ade1986ca806c634cb3._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_22_2f27b78215f97ade1986ca806c634cb3._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="RaspberryPie"
+ ip="96.44.189.100"
+ subject="&quot;Could not find module Crypto.Hash&quot; error when building git-annex "
+ date="2013-10-21T19:55:12Z"
+ content="""
+Lately I get this error message when trying to build git-annex-v4.20131002:
+
+    Utility/Hash.hs:7:8:
+        Could not find module `Crypto.Hash'
+        Perhaps you meant
+    	  Crypto.HMAC (needs flag -package crypto-api-0.10.2)
+        Use -v to see a list of the files searched for.
+
+crypto-api-0.10.2 is installed as a debian dev package. All the dependencies are met. I have no idea what's going on.  
+"""]]
diff --git a/doc/install/fromsource/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment b/doc/install/fromsource/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="64.134.31.139"
+ subject="comment 23"
+ date="2013-10-21T22:09:05Z"
+ content="""
+git-annex needs cryptohash version 0.10.0 or greater. You appear to have an old version. You can cabal `configure -f-CryptoHash` if it's for some reason failing to disable the cryptohash support despite the declared dependency not being met.
+"""]]
diff --git a/doc/install/fromsource/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment b/doc/install/fromsource/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="RaspberryPie"
+ ip="37.130.227.133"
+ subject="comment 24"
+ date="2013-10-22T17:55:32Z"
+ content="""
+I fixed the error by installing a newer version of cryptohash. Thanks for pointing out the culprit. 
+"""]]
diff --git a/doc/install/fromsource/comment_25_8a7664e6f9271718dc607a0782366c5b._comment b/doc/install/fromsource/comment_25_8a7664e6f9271718dc607a0782366c5b._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_25_8a7664e6f9271718dc607a0782366c5b._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="RaspberryPie"
+ ip="141.138.141.208"
+ subject="Bad version on Hackage"
+ date="2013-10-30T18:56:25Z"
+ content="""
+Quick note: The latest version in the Hackage repository (git-annex-4.20131024) fails to build, due to a faulty version of Assistant/Threads/Cronner.hs. 
+"""]]
diff --git a/doc/install/fromsource/comment_26_bd455c732639728bce2bfc39e32871d2._comment b/doc/install/fromsource/comment_26_bd455c732639728bce2bfc39e32871d2._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_26_bd455c732639728bce2bfc39e32871d2._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.47"
+ subject="comment 26"
+ date="2013-11-01T16:33:25Z"
+ content="""
+@RaspberryPie that only affected builds without the webapp, in any case it's fixed now.
+"""]]
diff --git a/doc/install/fromsource/comment_27_c080e9239b6eec88d329c28da7bb4141._comment b/doc/install/fromsource/comment_27_c080e9239b6eec88d329c28da7bb4141._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_27_c080e9239b6eec88d329c28da7bb4141._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="RaspberryPie"
+ ip="37.221.160.203"
+ subject="comment 27"
+ date="2013-11-02T12:52:18Z"
+ content="""
+Okay, the error doesn't show up anymore. I didn't even get to Cronner though, because this time I got a different error:
+
+    Assistant/Alert.hs:195:20:
+        Couldn't match expected type `Assistant ()' with actual type `()'
+        Expected type: Maybe Remote -> Assistant ()
+          Actual type: Maybe Remote -> ()
+        In the expression: noop
+        In an equation for `notFsckedNudge': notFsckedNudge _ = noop
+
+This is from trying to compile 4.20131101 with `-f\"-webapp -webdav\"`
+"""]]
diff --git a/doc/install/fromsource/comment_28_15951dd070a675300420eea137a28ef9._comment b/doc/install/fromsource/comment_28_15951dd070a675300420eea137a28ef9._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_28_15951dd070a675300420eea137a28ef9._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.47"
+ subject="comment 28"
+ date="2013-11-02T17:40:18Z"
+ content="""
+Unfortunate about that. I've fixed it in git.
+
+(It would be best to file bug reports about build failures to avoid cluttering up this page.)
+"""]]
diff --git a/doc/install/fromsource/comment_29_ac082dca67f4a29b06070c0283130f52._comment b/doc/install/fromsource/comment_29_ac082dca67f4a29b06070c0283130f52._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_29_ac082dca67f4a29b06070c0283130f52._comment
@@ -0,0 +1,39 @@
+[[!comment format=mdwn
+ username="robohack"
+ ip="24.67.98.78"
+ subject="cabal install failing due to problems building pcre-light-0.4"
+ date="2013-11-21T20:17:10Z"
+ content="""
+After a fresh install of Haskell, and following the instructions above, I end up with the following rather bizarre and unexpected problem:
+
+	$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
+	Resolving dependencies...
+	Configuring pcre-light-0.4...
+	Building pcre-light-0.4...
+	Preprocessing library pcre-light-0.4...
+	Base.hsc:103:18: error: pcre.h: No such file or directory
+	Base.hsc: In function ‘main’:
+	Base.hsc:402: error: ‘PCRE_ANCHORED’ undeclared (first use in this function)
+	Base.hsc:402: error: (Each undeclared identifier is reported only once
+	Base.hsc:402: error: for each function it appears in.)
+	Base.hsc:405: error: ‘PCRE_AUTO_CALLOUT’ undeclared (first use in this function)
+
+(followed by an error for every other macro that was expected to be defined in the header...)
+
+	compiling dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c failed (exit code 1)
+	command was: /usr/bin/gcc -c dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c -o dist/build/Text/Regex/PCRE/Light/Base_hsc_make.o -m64 -fno-stack-protector -m64 -fno-stack-protector -m64 -D__GLASGOW_HASKELL__=700 -Ddarwin_BUILD_OS -Ddarwin_HOST_OS -Dx86_64_BUILD_ARCH -Dx86_64_HOST_ARCH -I/sw/lib/ghc-7.0.4/bytestring-0.9.1.10/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/base-4.3.1.0/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include/
+	Failed to install pcre-light-0.4
+	cabal: Error: some packages failed to install:
+	git-annex-3.20120230 depends on pcre-light-0.4 which failed to install.
+	pcre-light-0.4 failed during the building phase. The exception was:
+	ExitFailure 1
+
+This is a somewhat older Mac OS X 10.6.8 system.
+
+I do have PCRE already installed via Fink, and pcre.h is in /sw/include.  I see other -I/sw/... things in the compile command above, but obviously /sw/include is not one of them.
+
+Any clues for me?
+
+(Why the heck does git-annex need pcre in particular anyway???  I saw another regex library get installed earlier somewhere in this (massive) process.)
+
+"""]]
diff --git a/doc/install/fromsource/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment b/doc/install/fromsource/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
+ nickname="Nigel"
+ subject="E: Unable to locate package libghc-libxml-sax-dev"
+ date="2013-05-30T15:05:47Z"
+ content="""
+I get an error from the command as above:
+$ sudo apt-get install cabal-install libgnutls28-dev libgsasl7-dev c2hs libghc libxml-sax-dev zlib1g-dev libghc-zlib-dev
+
+$ lsb_release -a
+No LSB modules are available.
+Distributor ID:	Ubuntu
+Description:	Ubuntu 12.04.2 LTS
+Release:	12.04
+Codename:	precise
+
+"""]]
diff --git a/doc/install/fromsource/comment_2_b7954521d9ab40622b665f278dd72e17._comment b/doc/install/fromsource/comment_2_b7954521d9ab40622b665f278dd72e17._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_2_b7954521d9ab40622b665f278dd72e17._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="azul"
+ ip="91.36.173.120"
+ subject="conflict solved"
+ date="2014-06-20T06:13:09Z"
+ content="""
+`apt-get install happy alex libghc-hjsmin-dev`
+solved the problem for me. The hjsmin lib was probably crucial. It seems a bunch of dependencies can also be installed as debs rather than through cabal.
+`standalone/android/buildchroot-inchroot` gave me a clue.
+"""]]
diff --git a/doc/install/fromsource/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment b/doc/install/fromsource/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment
@@ -0,0 +1,35 @@
+[[!comment format=mdwn
+ username="robohack"
+ ip="24.67.98.78"
+ subject="hmmm... ok, the PCRE problem was odd, but now this:"
+ date="2013-11-21T20:30:54Z"
+ content="""
+The PCRE problem is solved trivially in my case with a couple more cabal install options, though the need for these seems oddly dissatisfying given the reams of other stuff that was successfully built and installed without these options.
+
+Now however I seem to have encountered a deeper problem:
+
+	$ cabal install git-annex --bindir=$HOME/bin --extra-include-dirs=/sw/include --extra-lib-dirs=/sw/lib               
+	Resolving dependencies...
+	[1 of 1] Compiling Main             ( /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/Setup.hs, /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/Main.o )
+	Linking /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/setup ...
+	hsc2hs Utility/StatFS.hsc
+	perl -i -pe 's/^{-# INCLUDE.*//' Utility/StatFS.hs
+	ghc -O2 -Wall -ignore-package monads-fd --make configure
+	
+	Utility/StatFS.hsc:54:8:
+	    Could not find module `GHC.Foreign':
+	      Use -v to see a list of the files searched for.
+	make: *** [Build/SysConfig.hs] Error 1
+	Configuring git-annex-3.20120230...
+	Building git-annex-3.20120230...
+	Preprocessing executable 'git-annex' for git-annex-3.20120230...
+	
+	Git/Version.hs:11:18:
+	    Could not find module `Build.SysConfig':
+	      Use -v to see a list of the files searched for.
+	Failed to install git-annex-3.20120230
+	cabal: Error: some packages failed to install:
+	git-annex-3.20120230 failed during the building phase. The exception was:
+	ExitFailure 1
+
+"""]]
diff --git a/doc/install/fromsource/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment b/doc/install/fromsource/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="robohack"
+ ip="24.67.98.78"
+ subject="a different error trying to build from the git repo...."
+ date="2013-11-21T21:14:54Z"
+ content="""
+I'm using the ghc7.0 branch because Fink's GHC is still at 7.0.4....
+
+	$ cabal build                                
+	Building git-annex-3.20120523...
+	Preprocessing executable 'git-annex' for git-annex-3.20120523...
+	[ 78 of 163] Compiling Utility.Url      ( Utility/Url.hs, dist/build/git-annex/git-annex-tmp/Utility/Url.o )
+	
+	Utility/Url.hs:111:88:
+	    Couldn't match expected type `Maybe URI' with actual type `URI'
+	    In the second argument of `fromMaybe', namely
+	      `(newURI `relativeTo` u)'
+	    In the expression: fromMaybe newURI (newURI `relativeTo` u)
+	    In an equation for `newURI_abs':
+	        newURI_abs = fromMaybe newURI (newURI `relativeTo` u)
+
+"""]]
diff --git a/doc/install/fromsource/comment_32_1d34c294486c85b1149675fa5861ae35._comment b/doc/install/fromsource/comment_32_1d34c294486c85b1149675fa5861ae35._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_32_1d34c294486c85b1149675fa5861ae35._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.64"
+ subject="comment 32"
+ date="2013-11-22T16:27:36Z"
+ content="""
+@robohack, the ghc7.0 branch is not being maintained, and is so old I don't recommend it. To build it against current cabal you will probably need to version its dependency on network to an older version than 2.4.0. 
+
+Also, git-annex has not depended on pcre for a long time. But you're building thoroughly old version so get to trip over every bug that's been reported for the past 2 years..
+"""]]
diff --git a/doc/install/fromsource/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment b/doc/install/fromsource/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawn3p4i4lk_zMilvjnJ9sS6g2nerpgz0Fjc"
+ nickname="Matthias"
+ subject="Build failure"
+ date="2014-03-20T09:10:44Z"
+ content="""
+I followed the instructions and the invocation of
+
+    cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
+
+resulted in the following error:
+
+    Test.hs:107:41: Not in scope: `errMessage'
+    Failed to install git-annex-5.20140306
+    cabal: Error: some packages failed to install:
+    git-annex-5.20140306 failed during the building phase. The exception was:
+    ExitFailure 1
+
+I used the Haskell Platform for Mac OS X (10.8)
+
+"""]]
diff --git a/doc/install/fromsource/comment_34_38451e751add6daf479b559c4b6a7c61._comment b/doc/install/fromsource/comment_34_38451e751add6daf479b559c4b6a7c61._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_34_38451e751add6daf479b559c4b6a7c61._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://openid.stackexchange.com/user/a05bb829-932b-49f2-85a9-00dcda8b5e20"
+ nickname="Christian Pietsch"
+ subject="Re: Build failure"
+ date="2014-03-20T13:56:16Z"
+ content="""
+I get exactly the same error message as Matthias when attempting the minimal Cabal install on openSUSE 12.2 (x86_64) Linux.
+"""]]
diff --git a/doc/install/fromsource/comment_35_4d44e4531e6686bd340f26836ad40026._comment b/doc/install/fromsource/comment_35_4d44e4531e6686bd340f26836ad40026._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_35_4d44e4531e6686bd340f26836ad40026._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.102"
+ subject="comment 35"
+ date="2014-03-20T16:06:22Z"
+ content="""
+The `errMessage` build failure is due to a new version of optparse-applicative. I've added support for it in git master.
+"""]]
diff --git a/doc/install/fromsource/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment b/doc/install/fromsource/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkNcHu5T1Pxzl-r2co9vf6SxXYWubv2P04"
+ nickname="Matthew"
+ subject="I did indeed get problems on Ubuntu 13.04"
+ date="2014-06-25T01:01:43Z"
+ content="""
+The issues I had were version mismatches when resolving dependencies of git-annex.
+
+It seems that when you install haskell-platform package with apt-get, it installs a bunch of haskell dependencies as apt packages, yet those aren't needed for any other system packages.  So some people here who complain about version mismatches might not have intended to install any Haskell libraries with apt, they just come along for the ride by default.
+
+I can't remember the exact ones, but I ended up uninstalling some of the stuff that gets auto-installed along with haskell-platform, and using cabal to build those.  Then all the git-annex dependencies worked.
+
+Why 13.04 in this day and age?  Using Zentyal as a home server/gateway, and it currently runs on 13.04.
+
+This method might not work if you installed other apt packages that _do_ need those apt-based Haskell libraries.   But if git-annex is all you need that uses the Haskell platform, might work.
+"""]]
diff --git a/doc/install/fromsource/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment b/doc/install/fromsource/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment
@@ -0,0 +1,69 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmveNWaFIL1zEehHr_0416bKBzsul5tGlE"
+ nickname="Daniel"
+ subject="Install fails horribly"
+ date="2014-07-10T23:11:51Z"
+ content="""
+```
+lyriondesktop:/home/zilti/tmp # cabal install c2hs
+Resolving dependencies...
+Configuring c2hs-0.17.2...
+Building c2hs-0.17.2...
+Preprocessing executable 'c2hs' for c2hs-0.17.2...
+[ 1 of 26] Compiling Data.DLists      ( src/Data/DLists.hs, dist/build/c2hs/c2hs-tmp/Data/DLists.o )
+[ 2 of 26] Compiling Control.StateTrans ( src/Control/StateTrans.hs, dist/build/c2hs/c2hs-tmp/Control/StateTrans.o )
+
+src/Control/StateTrans.hs:77:1: Warning:
+    Module `Prelude' does not export `catch'
+[ 3 of 26] Compiling Data.Errors      ( src/Data/Errors.hs, dist/build/c2hs/c2hs-tmp/Data/Errors.o )
+[ 4 of 26] Compiling Data.Attributes  ( src/Data/Attributes.hs, dist/build/c2hs/c2hs-tmp/Data/Attributes.o )
+[ 5 of 26] Compiling Text.Lexers      ( src/Text/Lexers.hs, dist/build/c2hs/c2hs-tmp/Text/Lexers.o )
+[ 6 of 26] Compiling Control.StateBase ( src/Control/StateBase.hs, dist/build/c2hs/c2hs-tmp/Control/StateBase.o )
+[ 7 of 26] Compiling Data.NameSpaces  ( src/Data/NameSpaces.hs, dist/build/c2hs/c2hs-tmp/Data/NameSpaces.o )
+[ 8 of 26] Compiling C2HS.C.Attrs     ( src/C2HS/C/Attrs.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Attrs.o )
+[ 9 of 26] Compiling C2HS.C.Builtin   ( src/C2HS/C/Builtin.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Builtin.o )
+[10 of 26] Compiling Paths_c2hs       ( dist/build/autogen/Paths_c2hs.hs, dist/build/c2hs/c2hs-tmp/Paths_c2hs.o )
+[11 of 26] Compiling C2HS.Config      ( src/C2HS/Config.hs, dist/build/c2hs/c2hs-tmp/C2HS/Config.o )
+[12 of 26] Compiling C2HS.Switches    ( src/C2HS/Switches.hs, dist/build/c2hs/c2hs-tmp/C2HS/Switches.o )
+[13 of 26] Compiling C2HS.Version     ( src/C2HS/Version.hs, dist/build/c2hs/c2hs-tmp/C2HS/Version.o )
+[14 of 26] Compiling System.CIO       ( src/System/CIO.hs, dist/build/c2hs/c2hs-tmp/System/CIO.o )
+[15 of 26] Compiling Control.State    ( src/Control/State.hs, dist/build/c2hs/c2hs-tmp/Control/State.o )
+[16 of 26] Compiling C2HS.State       ( src/C2HS/State.hs, dist/build/c2hs/c2hs-tmp/C2HS/State.o )
+[17 of 26] Compiling C2HS.CHS.Lexer   ( src/C2HS/CHS/Lexer.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS/Lexer.o )
+
+src/C2HS/CHS/Lexer.hs:612:16: Warning:
+    Defined but not used: `lexeme'
+[18 of 26] Compiling C2HS.CHS         ( src/C2HS/CHS.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS.o )
+[19 of 26] Compiling C2HS.Gen.Header  ( src/C2HS/Gen/Header.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Header.o )
+[20 of 26] Compiling C2HS.C.Trav      ( src/C2HS/C/Trav.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Trav.o )
+[21 of 26] Compiling C2HS.C.Names     ( src/C2HS/C/Names.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Names.o )
+[22 of 26] Compiling C2HS.C           ( src/C2HS/C.hs, dist/build/c2hs/c2hs-tmp/C2HS/C.o )
+[23 of 26] Compiling C2HS.Gen.Monad   ( src/C2HS/Gen/Monad.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Monad.o )
+
+src/C2HS/Gen/Monad.hs:227:10: Warning:
+    Orphan instance: instance Read Ident
+[24 of 26] Compiling C2HS.C.Info      ( src/C2HS/C/Info.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Info.o )
+[25 of 26] Compiling C2HS.Gen.Bind    ( src/C2HS/Gen/Bind.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Bind.o )
+
+src/C2HS/Gen/Bind.hs:971:43: Warning:
+    In the use of `posColumn' (imported from Language.C.Data.Position):
+    Deprecated: \"column number information is inaccurate in presence of macros - do not rely on it.\"
+
+src/C2HS/Gen/Bind.hs:789:10: Warning:
+    Orphan instance: instance Num CInteger
+[26 of 26] Compiling Main             ( src/Main.hs, dist/build/c2hs/c2hs-tmp/Main.o )
+Linking dist/build/c2hs/c2hs ...
+Installing executable(s) in /root/.cabal/bin
+Installed c2hs-0.17.2
+lyriondesktop:/home/zilti/tmp # cabal install git-annex
+Resolving dependencies...
+Configuring gnuidn-0.2.1...
+cabal: The program c2hs is required but it could not be found.
+Failed to install gnuidn-0.2.1
+cabal: Error: some packages failed to install:
+git-annex-5.20140709 depends on gnuidn-0.2.1 which failed to install.
+gnuidn-0.2.1 failed during the configure step. The exception was:
+ExitFailure 1
+network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
+```
+"""]]
diff --git a/doc/install/fromsource/comment_38_5c1e96221154a4ae4ebd636232044ced._comment b/doc/install/fromsource/comment_38_5c1e96221154a4ae4ebd636232044ced._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_38_5c1e96221154a4ae4ebd636232044ced._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.2"
+ subject="comment 38"
+ date="2014-07-11T18:30:55Z"
+ content="""
+@Daniel, I suggest you either follow the instuctions above, or if you don't want to follow the instructions, follow the error messages. :P In this case, the instructions say to do:
+
+> PATH=$HOME/bin:$PATH
+> cabal install c2hs --bindir=$HOME/bin
+
+Which is exactly to work around the problem that we can see in your transcript: `Installing executable(s) in /root/.cabal/bin` 
+
+Also, to reiterate the top of the page: If you are not comfortable tracking down and dealing with library build problems, installing git-annex with cabal is probably not the right choice for you!
+
+"""]]
diff --git a/doc/install/fromsource/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment b/doc/install/fromsource/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkftzaCvV7EDKVDfJhsQZ3E1Vn-0db516w"
+ nickname="Edward"
+ subject="GHC 7.8 Issue"
+ date="2014-08-20T20:06:01Z"
+ content="""
+Just an FYI: I tried to \"cabal install --only-dependencies\" with GHC 7.8 and it fails because DAV-1.0.1 is pulling in lens-3.10.3 which is not compatible with GHC 7.8 due to changes in Typeable. 
+
+I don't have enough experience with cabal to figure out why it's not trying to use a newer version of lens.
+"""]]
diff --git a/doc/install/fromsource/comment_3_55bed050bdb768543dbe1b86edec057d._comment b/doc/install/fromsource/comment_3_55bed050bdb768543dbe1b86edec057d._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_3_55bed050bdb768543dbe1b86edec057d._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ nickname="joey"
+ subject="comment 3"
+ date="2013-05-30T15:25:29Z"
+ content="""
+If you're installing git-annex with cabal, there is no need to install any haskell library packages with apt-get. That includes libghc-libxml-sax-dev and libghc-zlib-dev. Without those, the apt-get line may work to install the C libraries needed for cabal to install the haskell libraries. 
+
+However, see the the [[Ubuntu]] page for much easier ways to get git-annex installed.
+"""]]
diff --git a/doc/install/fromsource/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment b/doc/install/fromsource/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment
@@ -0,0 +1,23 @@
+[[!comment format=mdwn
+ username="azul"
+ ip="91.36.173.120"
+ subject="c2hs required for cabal to install dependencies"
+ date="2014-06-20T06:35:35Z"
+ content="""
+Next thing i ran into was missing c2hs.
+So
+`apt-get install c2hs` before running the cabal install otherwise...
+
+<pre>
+$ cabal install git-annex --only-dependencies
+Resolving dependencies...
+Configuring gnuidn-0.2.1...
+cabal: The program c2hs is required but it could not be found.
+Failed to install gnuidn-0.2.1
+cabal: Error: some packages failed to install:
+gnuidn-0.2.1 failed during the configure step. The exception was:
+ExitFailure 1
+network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
+</pre>
+
+"""]]
diff --git a/doc/install/fromsource/comment_45_d9cccbb9620cc8218e72b5380fd89a05._comment b/doc/install/fromsource/comment_45_d9cccbb9620cc8218e72b5380fd89a05._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_45_d9cccbb9620cc8218e72b5380fd89a05._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.22"
+ subject="no need for c2hs"
+ date="2014-09-16T19:28:09Z"
+ content="""
+The c2hs mentioned in some of the above comments is not needed any longer; ghc 7.6.3 and newer come with a hsc2hs command that is used.
+"""]]
diff --git a/doc/install/fromsource/comment_46_954de34275d33bc4590927f911761563._comment b/doc/install/fromsource/comment_46_954de34275d33bc4590927f911761563._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_46_954de34275d33bc4590927f911761563._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.22"
+ subject="comment 46"
+ date="2014-09-16T19:33:11Z"
+ content="""
+Britt's comment is spot on, but git-annex tries pretty hard to work with lots of older versions of haskell libraries, as well as the latest and greatest. So it should be ok to install haskell libraries with apt-get and use them to build git-annex, as the (revised) instructions above show.
+
+What tends not to work so well is use apt-get to install older versions of haskell libraries and then cabal install on top to add newer stuff. Gets complicated and I'd recommend not going there. The instructions above show using either apt-get or cabal to install the haskell libraries, but not both.
+"""]]
diff --git a/doc/install/fromsource/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment b/doc/install/fromsource/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
+ nickname="Nigel"
+ subject="Re: Comment 3"
+ date="2013-05-30T15:48:44Z"
+ content="""
+@Joey Many thanks.
+I am new to Haskell (vaguely looked at it with DARCS) and git-annex.
+After installing with apt-get on Ubuntu 12.04 LTS I found webapp was missing, hence have come here.
+I am going through the correct steps now, it should be awesome when done.
+
+This seems to be a long build process (still going on my old laptop, much longer than apt-get).
+Ubuntu git-annex packages from 13.10 Saucy I think are updated to include webapp.
+"""]]
diff --git a/doc/install/fromsource/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment b/doc/install/fromsource/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment
@@ -0,0 +1,37 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawld54zdyk6b0W4jXnssSO_j2Nn3W1uVsUE"
+ nickname="Paul"
+ subject="comment 4"
+ date="2014-08-24T11:53:11Z"
+ content="""
+@azul, thanks for hints, but it still fails. No wonders though - this is Haskell, kids.
+
+~~~~
+$ cabal install git-annex --only-dependencies
+Resolving dependencies...
+cabal: Could not resolve dependencies:
+trying: git-annex-5.20140817
+trying: git-annex-5.20140817:+webapp
+trying: git-annex-5.20140817:+s3
+trying: git-annex-5.20140817:+dns
+trying: dns-1.4.3
+trying: yesod-1.2.6.1
+trying: yesod-auth-1.3.4.2
+trying: http-client-0.3.7.1
+trying: http-client-0.3.7.1:+network-uri
+trying: hS3-0.5.8
+trying: hxt-9.3.1.6
+trying: hxt-9.3.1.6:-network-uri
+rejecting: network-2.6.0.1, 2.6.0.0 (conflict: hxt-9.3.1.6:network-uri =>
+network>=2.4 && <2.6)
+rejecting: network-2.5.0.0, 2.4.2.3, 2.4.2.2, 2.4.2.1, 2.4.2.0, 2.4.1.2,
+2.4.1.1, 2.4.1.0, 2.4.0.1, 2.4.0.0, 2.3.2.0, 2.3.1.1, 2.3.1.0, 2.3.0.14,
+2.3.0.13, 2.3.0.12, 2.3.0.11, 2.3.0.10, 2.3.0.9, 2.3.0.8, 2.3.0.7, 2.3.0.6,
+2.3.0.5, 2.3.0.4, 2.3.0.3, 2.3.0.2, 2.3.0.1, 2.3 (conflict:
+http-client-0.3.7.1:network-uri => network>=2.6)
+rejecting: network-2.2.3.1, 2.2.3, 2.2.1.10, 2.2.1.9, 2.2.1.8, 2.2.1.7,
+2.2.1.6, 2.2.1.5, 2.2.1.4, 2.2.1.3, 2.2.1.2, 2.2.1.1, 2.2.1, 2.2.0.1, 2.2.0.0,
+2.1.0.0, 2.0 (conflict: dns => network>=2.3)
+~~~~
+
+"""]]
diff --git a/doc/install/fromsource/comment_5_4aea55dc5b24d84e0953382ccfea1a01._comment b/doc/install/fromsource/comment_5_4aea55dc5b24d84e0953382ccfea1a01._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_5_4aea55dc5b24d84e0953382ccfea1a01._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmfEGTjv4GsWkSG2lpuBitRDxVkml7yEQg"
+ nickname="Britt"
+ subject="Installing debs"
+ date="2014-09-16T02:16:28Z"
+ content="""
+@azul - the problem with installing dependencies from apt-get is that the Ubuntu haskell packages are rather old. It shouldn't be this way (and it has gotten a LOT better - I suggest installing the newest version of the Haskell Platform that you can), but often cabal will complain about a package it is unable to install because it failed on the install of that package's dependencies. You should try to cabal install $FAILED_DEPENDENCY (not an actual env variable), and you will often get more informative error messages - some packages require non-haskell dependencies (take gtk3, for instance) which cabal doesn't know how to handle at this point, because that would require some cross platform foo (cabal install runs on Windows and OSX, which don't have native package managers at all). 
+
+@Paul - It looks like you ran into a bug, because http-client no longer depends on network>=2.6, it now can take network 2.4 - 2.6 or 2.6 or greater. If you try again it should work. 
+
+Please don't be put off by haskell because of things like this - git annex is a very large and complicated project, and developing on large projects such as this pretty much require you to have pretty recent versions of all haskell packages. I really suggest you take a look at this book http://learnyouahaskell.com/introduction. Haskell is a beautiful language and it doesn't have to be esoteric, academic, or difficult at all. It's obvious since you are attempting to build this from source that you are either interested in haskell or you are only interested in the development of git-annex. Either way, it would behoove you to read that book. It is short, full of great examples, and it even has pleasant illustrations. It may look like a children's book, but by the end of it you will know how to use all of the major monads (you may not know what a monad is, but that isn't really that important anyway - you just need to know how they are used).
+"""]]
diff --git a/doc/install/fromsource/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment b/doc/install/fromsource/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment
@@ -0,0 +1,24 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
+ nickname="Nigel"
+ subject="Re: Comment 3"
+ date="2013-05-30T16:29:12Z"
+ content="""
+At the end of the build I got these errors:
+Registering yesod-static-1.1.2.3...
+Installing library in /home/nrb/.cabal/lib/yesod-static-1.1.2.3/ghc-7.4.1
+Registering yesod-static-1.1.2.3...
+cabal: Error: some packages failed to install:
+c2hs-0.16.4 depends on language-c-0.3.2.1 which failed to install.
+dbus-0.10.4 depends on libxml-sax-0.7.4 which failed to install.
+git-annex-4.20130521.2 depends on libxml-sax-0.7.4 which failed to install.
+language-c-0.3.2.1 failed during the configure step. The exception was:
+ExitFailure 1
+libxml-sax-0.7.4 failed during the configure step. The exception was:
+ExitFailure 1
+network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to
+install.
+
+One way I could fix this myself is to put together a VM with 13.10 or Debian in it and work inside that.
+Or if I can get help to fix my issues here that would be great ;)
+"""]]
diff --git a/doc/install/fromsource/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment b/doc/install/fromsource/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
+ nickname="Nigel"
+ subject="Some errors after the build"
+ date="2013-05-30T16:38:37Z"
+ content="""
+    Registering yesod-static-1.1.2.3...
+    Installing library in /home/nrb/.cabal/lib/yesod-static-1.1.2.3/ghc-7.4.1
+    Registering yesod-static-1.1.2.3...
+    cabal: Error: some packages failed to install:
+    c2hs-0.16.4 depends on language-c-0.3.2.1 which failed to install.
+    dbus-0.10.4 depends on libxml-sax-0.7.4 which failed to install.
+    git-annex-4.20130521.2 depends on libxml-sax-0.7.4 which failed to install.
+    language-c-0.3.2.1 failed during the configure step. The exception was:
+    ExitFailure 1
+    libxml-sax-0.7.4 failed during the configure step. The exception was:
+    ExitFailure 1
+    network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to
+    install.
+
+"""]]
diff --git a/doc/install/fromsource/comment_7_129c4f2e404c874e5adfa52902a81104._comment b/doc/install/fromsource/comment_7_129c4f2e404c874e5adfa52902a81104._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_7_129c4f2e404c874e5adfa52902a81104._comment
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="krig"
+ ip="46.194.28.123"
+ subject="Could not resolve dependencies for yesod"
+ date="2013-06-25T06:14:18Z"
+ content="""
+I'm having problems installing from cabal, and it seems related to yesod. I found an older discussion on something similar, where a constraint to require a newer version of yesod had been added, but I haven't figured out what was done to solve it.
+
+The problem seems to be that git-annex requires yesod < 1.2, but cabal is unable to install an older version.
+
+    $ cabal install git-annex --bindir=$HOME/bin
+    Resolving dependencies...
+    cabal: Could not resolve dependencies:
+    trying: git-annex-4.20130601
+    trying: git-annex-4.20130601:+webapp
+    rejecting: yesod-1.2.1.1, 1.2.1, 1.2.0.1, 1.2.0 (conflict:
+    git-annex-4.20130601:webapp => yesod(<1.2))
+    trying: yesod-1.1.9.3
+    $
+
+From what I can tell, the problem is fixed in github master since yesod >= 1.2 is supported again.
+"""]]
diff --git a/doc/install/fromsource/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment b/doc/install/fromsource/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="4.152.108.193"
+ subject="comment 8"
+ date="2013-06-25T17:16:46Z"
+ content="""
+git-annex 4.20130621 once again builds with the current version of yesod.
+"""]]
diff --git a/doc/install/fromsource/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment b/doc/install/fromsource/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/fromsource/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawl7dGdYtCHb7xleEOp6n8yaUQ4UtaiAEEs"
+ nickname="Henning"
+ subject="libxml-sax Error on OS X fresh install"
+ date="2013-07-27T13:11:23Z"
+ content="""
+I had - maybe the same problem as Nigel - with ExitFailure 1 libxml-sax-0.7.4 .
+
+I could fix this by forcing the link of libxml2 package with \"brew link libxml2 --force\". Maybe you should update your guide. I had this problem on 2 different machines running both the current versions of OS X.
+
+After this the build finished successfull. Maybe this helps.
+"""]]
diff --git a/doc/news/version_5.20140709.mdwn b/doc/news/version_5.20140709.mdwn
deleted file mode 100644
--- a/doc/news/version_5.20140709.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-git-annex 5.20140709 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Fix race in direct mode merge code that could cause all files in the
-     repository to be removed. It should be able to recover repositories
-     experiencing this bug without data loss. See:
-     http://git-annex.branchable.com/bugs/bad\_merge\_commit\_deleting\_all\_files/
-   * Fix git version that supported --no-gpg-sign.
-   * Fix bug in automatic merge conflict resolution, when one side is an
-     annexed symlink, and the other side is a non-annexed symlink.
-   * Really fix bug that caused the assistant to make many unncessary
-     empty merge commits."""]]
diff --git a/doc/news/version_5.20140919.mdwn b/doc/news/version_5.20140919.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/news/version_5.20140919.mdwn
@@ -0,0 +1,16 @@
+git-annex 5.20140919 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * Security fix for S3 and glacier when using embedcreds=yes with
+     encryption=pubkey or encryption=hybrid. CVE-2014-6274
+     The creds embedded in the git repo were *not* encrypted.
+     git-annex enableremote will warn when used on a remote that has
+     this problem. For details, see:
+     https://git-annex.branchable.com/upgrades/insecure\_embedded\_creds/
+   * assistant: Detect when repository has been deleted or moved, and
+     automatically shut down the assistant. Closes: #[761261](http://bugs.debian.org/761261)
+   * Windows: Avoid crashing trying to list gpg secret keys, for gcrypt
+     which is not yet supported on Windows.
+   * WebDav: Fix enableremote crash when the remote already exists.
+     (Bug introduced in version 5.20140817.)
+   * add: In direct mode, adding an annex symlink will check it into git,
+     as was already done in indirect mode."""]]
diff --git a/doc/upgrades/insecure_embedded_creds.mdwn b/doc/upgrades/insecure_embedded_creds.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/upgrades/insecure_embedded_creds.mdwn
@@ -0,0 +1,42 @@
+git-annex had a bug in the S3 and Glacier remotes where if embedcreds=yes
+was set, and the remote used encryption=pubkey or encryption=hybrid,
+the embedded AWS credentials were stored in the git repository
+in (effectively) plaintext, not encrypted as they were supposed to be.
+
+That means that anyone who gets a copy of the git repository can extract the
+AWS credentials from it. Which would be bad..
+
+A remote with this problem cannot be enabled using `git annex
+enableremote`. Old versions of git-annex will fail with a gpg error;
+the current version will fail with a pointer to this web page.
+
+If your repository has this problem, chose from one of these approaches
+to deal with it:
+
+1. Change your AWS credentials, so the ones stored in the clear in git
+   won't be used. 
+   
+   After changing the credentials, make sure you have a
+   fixed version of git-annex, and you can then re-embed the new creds
+   into the repository, encrypted this time, by setting the
+   `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID` environment variables,
+   and running `git annex enableremote $remotename embedcreds=yes`
+
+2. Fix the problem and then remove the history of the git-annex branch
+   of the repository.
+
+   Make sure you have a fixed version of git-annex, and force git-annex
+   to rewrite the embedded creds, with encryption this time, by setting
+   by setting the `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID`
+   environment variables, and running `git annex enableremote $remotename embedcreds=yes`
+
+   Then, to get rid of old versions of the git-annex branch that still
+   contain the creds in cleartext, you can use `git annex forget`;
+   note that it will remove other historical data too.
+   
+   Keep in mind that this will not necessarily delete data from clones
+   you do not control.
+
+3. If you're sure that you're the only one who has access to the repository,
+   you could decide to leave it as-is. It's no more insecure than if you
+   had used encryption=shared in the first place when setting it up.
diff --git a/git-annex.1 b/git-annex.1
--- a/git-annex.1
+++ b/git-annex.1
@@ -134,7 +134,8 @@
 Or specify \fB\-\-fast\fP to sync with the remotes with the
 lowest annex\-cost value.
 .IP
-The sync process involves first committing all local changes,
+The sync process involves first committing any local changes to files
+that have previously been added to the repository,
 then fetching and merging the \fBsynced/master\fP and the \fBgit\-annex\fP branch
 from the remote repositories, and finally pushing the changes back to
 those branches on the remote repositories. You can use standard git
diff --git a/git-annex.cabal b/git-annex.cabal
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -1,5 +1,5 @@
 Name: git-annex
-Version: 5.20140915
+Version: 5.20140919
 Cabal-Version: >= 1.8
 License: GPL-3
 Maintainer: Joey Hess <joey@kitenet.net>
@@ -132,7 +132,7 @@
 
   if flag(TestSuite)
     Build-Depends: tasty (>= 0.7), tasty-hunit, tasty-quickcheck, tasty-rerun,
-     optparse-applicative, crypto-api
+     optparse-applicative (>= 0.9.1), crypto-api
     CPP-Options: -DWITH_TESTSUITE
 
   if flag(TDFA)
