Recent changes to this wiki:

ssh fetching fail
diff --git a/doc/forum/Do_I_have_naming_ssh_remote_issue__63__.mdwn b/doc/forum/Do_I_have_naming_ssh_remote_issue__63__.mdwn
new file mode 100644
index 0000000..9856e7c
--- /dev/null
+++ b/doc/forum/Do_I_have_naming_ssh_remote_issue__63__.mdwn
@@ -0,0 +1,40 @@
+I'm running [git-annex](http://ix.io/gJJ) from <https://aur.archlinux.org/packages/git-annex-bin> btw on Archlinux.
+
+I fetched a copy of my [git-annex wedding test repo](https://github.com/kaihendry/krwedding) to a machine on ssh called 'bible'.
+
+Now I'm trying to fetch via ssh from my local machine "X1C3".
+
+I can't work out how to fetch from it from b1b15a9b-1aa1-4f94-8b9a-2186d71c0d1a .... what am I missing?
+
+    X1C3:~/annex/krwedding$ git-annex whereis krfeature.mp4
+     whereis krfeature.mp4 (3 copies)
+        00000000-0000-0000-0000-000000000001 -- web
+        10418340-834d-41c2-b38f-7ee84bf6a23a -- s3
+        b1b15a9b-1aa1-4f94-8b9a-2186d71c0d1a -- Jamie's bible
+      web: http://r2d2.webconverger.org/2013-12-22/krfeature.mp4
+      web: http://static.prazefarm.co.uk/krfeature.mp4
+      web: https://objects.dreamhost.com/wedding-video/krfeature.mp4
+    ok
+    X1C3:~/annex/krwedding$ git-annex get . --from "Jamie's bible"
+    git-annex: there is no available git remote named "Jamie's bible"
+    X1C3:~/annex/krwedding$ git-annex enableremote Jamie's bible
+    > ^C
+    X1C3:~/annex/krwedding$ git-annex enableremote "Jamie's bible"
+    git-annex: Unknown special remote name.
+    Known special remotes: s3
+    X1C3:~/annex/krwedding$ git-annex get . --from b1b15a9b-1aa1-4f94-8b9a-2186d71c0d1a
+    git-annex: there is no available git remote named "b1b15a9b-1aa1-4f94-8b9a-2186d71c0d1a"
+
+Why doesn't the UUID work? :/
+
+I even [tried renaming the remote to the UUID... didn't work](http://ix.io/gJI)
+
+# Issue 1
+
+Keep getting `git-annex-shell: user error (git ["config","--null","--list"] exited 126)` even though when I run `git config` my return error is 0: <http://ix.io/gJG>
+
+
+# Issue 2
+
+I can't work out the [git-annex remote type for ssh, in order to rename the remote](http://ix.io/gJH). I think the issue here is that my ssh remote name "Jamie's bible" doesn't match with the `git remote` name bible.
+

diff --git a/doc/forum/NTFS_usb_on_linux_unable_to_connect_to_ssh_remote.mdwn b/doc/forum/NTFS_usb_on_linux_unable_to_connect_to_ssh_remote.mdwn
new file mode 100644
index 0000000..d7867f9
--- /dev/null
+++ b/doc/forum/NTFS_usb_on_linux_unable_to_connect_to_ssh_remote.mdwn
@@ -0,0 +1,29 @@
+There are SSH keys in ~/.ssh to a remote server that I added as a git annex remote. On my Debian box, I am able to `git annex copy` and `git annex move` to and from the remote to a local repo at `~/archive` with no problems. I also have no problems with external USB drives formatted ext4. 
+
+I have an external usb drive formatted NTFS that I connect to a Debian box. I added the remote server like the others and when I try to copy or move to and from it, this error code shows up. 
+
+
+
+    pull archive 
+    Control socket connect(.git/annex/ssh/f7be67fcc0a6f016ba90edcdd8e02e1f): Connection refused
+    Failed to connect to new control master
+    fatal: Could not read from remote repository.
+
+    Please make sure you have the correct access rights
+    and the repository exists.
+    failed
+    push archive 
+    Control socket connect(.git/annex/ssh/f7be67fcc0a6f016ba90edcdd8e02e1f): Connection refused
+    Failed to connect to new control master
+    fatal: Could not read from remote repository.
+
+    Please make sure you have the correct access rights
+    and the repository exists.
+
+    Pushing to archive failed.
+
+
+
+I think it is because of NTFS and the ssh key stored in `~/.ssh`, but I don't know what is going on. 
+
+Thanks!

Added a comment
diff --git a/doc/forum/Per_directory_numcopies/comment_2_00572e3c15e5a9d253fb4ea57b45ff0d._comment b/doc/forum/Per_directory_numcopies/comment_2_00572e3c15e5a9d253fb4ea57b45ff0d._comment
new file mode 100644
index 0000000..d75f37e
--- /dev/null
+++ b/doc/forum/Per_directory_numcopies/comment_2_00572e3c15e5a9d253fb4ea57b45ff0d._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawksOCeakibYmGDt3wLLo4nkY0FkB72I2Uo"
+ nickname="Source"
+ subject="comment 2"
+ date="2015-03-05T01:27:52Z"
+ content="""
+That's exactly what I was looking for, Thanks!
+"""]]

update
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 88e8b81..aa10122 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -271,3 +271,17 @@ download some other Item. However, it might be good to rate limit the
 number of concurrent downloads of a given item, to prevent this and perhaps
 other issues. This could be done by a wrapper around git-annex shell or
 perhaps a git-annex modification.
+
+With clients all fscking their part of a shard once a month,
+that will increase the size of the git repository, with new distributed
+fsck updates. Basically, it grows by one line per file in the shard,
+times the amount of redundancy that's been reached. So, a 10 thousand item
+shard with redundancy 3 will grow by 30000 lines per month. Line length
+for location log is 58 bytes, so that's 1.7 mb growth per month of the git
+repo. (That's for blobs, plus additional overhead for trees and commits.)
+However, git will delta compress most of it, so it might be
+significantly smaller. If the distributed fsck timestamps are all
+the same for a client, they will delta compress along with everything else.
+This could reduce the blob growth to a few dozen bytes per client per month.
+This is something to keep an eye on, especially since shipping large git
+repo changes to clients is not desirable.

add end-user view section
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 05fa247..88e8b81 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -3,6 +3,18 @@ This is a fairly detailed design proposal for using git-annex to build
 
 [[!toc ]]
 
+## end-user view
+
+What the end user sees is a directory, with a .git subdirectory,
+and 10 thousand little files (actually, they're broken symlinks, on
+Linux/OSX). Over time, some of the symlinks start filling in with
+"random" content from the IA. 
+
+The user can look at that content, or even delete files they don't want to
+host.
+
+The user can control how much total disk space the directory takes up.
+
 ## sharding to scale
 
 The IA contains some 24 million Items.

doc/devblog/day_260__random_month.mdwn: Typo
diff --git a/doc/devblog/day_260__random_month.mdwn b/doc/devblog/day_260__random_month.mdwn
index 35ed32f..2d71c04 100644
--- a/doc/devblog/day_260__random_month.mdwn
+++ b/doc/devblog/day_260__random_month.mdwn
@@ -15,7 +15,7 @@ Got started on the randomness today with this
 [[design proposal for using git-annex to back up the entire Internet Archive|design/iabackup]].
 This is something the Archive Team is [considering taking on](http://archiveteam.org/index.php?title=INTERNETARCHIVE.BAK),
 and I had several hours driving and hiking to think about it and came up
-with a workable design. (Assuming large enough crowd of volenteers.)
+with a workable design. (Assuming large enough crowd of volunteers.)
 
 Don't know if it will happen, but it was a useful thought problem to see how
 git-annex works, and doesn't work in this unusual use case.

devblog
diff --git a/doc/devblog/day_261__random_improvements.mdwn b/doc/devblog/day_261__random_improvements.mdwn
new file mode 100644
index 0000000..bc0478e
--- /dev/null
+++ b/doc/devblog/day_261__random_improvements.mdwn
@@ -0,0 +1,5 @@
+Fixed a mojibake bug that affected metadata values that included both
+whitespace and unicode characters. This was very fiddly to get right.
+
+Finished up Monday's work to support submodules, getting them working
+on filesystems that don't support symlinks.

fixup annex link target calculation when submodules are used in filesystems not supporting symlinks
diff --git a/Annex/Fixup.hs b/Annex/Fixup.hs
index cda3646..bb35454 100644
--- a/Annex/Fixup.hs
+++ b/Annex/Fixup.hs
@@ -60,12 +60,13 @@ fixupDirect r = return r
  - submodule is mounted.
  -
  - When the filesystem doesn't support symlinks, we cannot make .git
- - into a symlink. In this case, we merely adjust the Repo so that
+ - into a symlink. But we don't need too, since the repo will use direct
+ - mode, In this case, we merely adjust the Repo so that
  - symlinks to objects that get checked in will be in the right form.
  -}
 fixupSubmodule :: Repo -> GitConfig -> IO Repo
 fixupSubmodule r@(Repo { location = l@(Local { worktree = Just w, gitdir = d }) }) c
-	| (".git" </> "modules") `isInfixOf` d = do
+	| needsSubmoduleFixup r = do
 		when (coreSymlinks c) $
 			replacedotgit
 				`catchNonAsync` \_e -> hPutStrLn stderr
@@ -84,3 +85,8 @@ fixupSubmodule r@(Repo { location = l@(Local { worktree = Just w, gitdir = d })
 		maybe (error "unset core.worktree failed") (\_ -> return ())
 			=<< Git.Config.unset "core.worktree" r
 fixupSubmodule r _ = return r
+
+needsSubmoduleFixup :: Repo -> Bool
+needsSubmoduleFixup (Repo { location = (Local { worktree = Just _, gitdir = d }) }) =
+	(".git" </> "modules") `isInfixOf` d
+needsSubmoduleFixup _ = False
diff --git a/Locations.hs b/Locations.hs
index 9b10d3c..7602a27 100644
--- a/Locations.hs
+++ b/Locations.hs
@@ -79,6 +79,7 @@ import Types.Difference
 import qualified Git
 import Git.FilePath
 import Annex.DirHashes
+import Annex.Fixup
 
 {- Conventions:
  -
@@ -126,9 +127,9 @@ annexLocation config key hasher = objectDir </> keyPath key (hasher $ objectHash
  - the actual location of the file's content.
  -}
 gitAnnexLocation :: Key -> Git.Repo -> GitConfig -> IO FilePath
-gitAnnexLocation key r config = gitAnnexLocation' key r config (annexCrippledFileSystem config) doesFileExist
-gitAnnexLocation' :: Key -> Git.Repo -> GitConfig -> Bool -> (FilePath -> IO Bool) -> IO FilePath
-gitAnnexLocation' key r config crippled checker
+gitAnnexLocation key r config = gitAnnexLocation' key r config (annexCrippledFileSystem config) doesFileExist (Git.localGitDir r)
+gitAnnexLocation' :: Key -> Git.Repo -> GitConfig -> Bool -> (FilePath -> IO Bool) -> FilePath -> IO FilePath
+gitAnnexLocation' key r config crippled checker gitdir
 	{- Bare repositories default to hashDirLower for new
 	 - content, as it's more portable.
 	 -
@@ -147,18 +148,27 @@ gitAnnexLocation' key r config crippled checker
 	 - present. -}
 	| otherwise = return $ inrepo $ annexLocation config key hashDirMixed
   where
-	inrepo d = Git.localGitDir r </> d
+	inrepo d = gitdir </> d
 	check locs@(l:_) = fromMaybe l <$> firstM checker locs
 	check [] = error "internal"
 
-{- Calculates a symlink to link a file to an annexed object. -}
+{- Calculates a symlink target to link a file to an annexed object. -}
 gitAnnexLink :: FilePath -> Key -> Git.Repo -> GitConfig -> IO FilePath
 gitAnnexLink file key r config = do
 	currdir <- getCurrentDirectory
 	let absfile = fromMaybe whoops $ absNormPathUnix currdir file
-	loc <- gitAnnexLocation' key r config False (\_ -> return True)
+	let gitdir = getgitdir currdir
+	loc <- gitAnnexLocation' key r config False (\_ -> return True) gitdir
 	toInternalGitPath <$> relPathDirToFile (parentDir absfile) loc
   where
+	getgitdir currdir
+		{- This special case is for git submodules on filesystems not
+		 - supporting symlinks; generate link target that will
+		 - work portably. -}
+		| coreSymlinks config == False && needsSubmoduleFixup r =
+			fromMaybe whoops $ absNormPathUnix currdir $
+				Git.repoPath r </> ".git"
+		| otherwise = Git.localGitDir r
 	whoops = error $ "unable to normalize " ++ file
 
 {- File used to lock a key's content. -}
diff --git a/doc/submodules.mdwn b/doc/submodules.mdwn
index fe5fc9a..7466808 100644
--- a/doc/submodules.mdwn
+++ b/doc/submodules.mdwn
@@ -5,7 +5,9 @@ Git normally makes a `.git` **file** in a
 submodule, that points to the real git repository under `.git/modules/`.
 This presents problems for git-annex. So, when used in a submodule,
 git-annex will automatically replace the `.git` file with a symlink
-pointing at the git repository.
+pointing at the git repository. (When the filesystem doesn't support
+symlinks, direct mode is used, and submodules are supported in that
+setup too.)
 
 With that taken care of, git-annex should work ok in submodules. Although
 this is a new and somewhat experimental feature.
@@ -18,4 +20,3 @@ Known problems:
   will refuse to delete it, complaining that the
   submodule "uses a .git directory". Workaround: Use `rm -rf`
   to delete the tree, and then `git commit`.
-* This won't work on filesystems not supporting symlinks.

metadata: Fix encoding problem that led to mojibake when storing metadata strings that contained both unicode characters and a space (or '!') character.
The fix is to stop using w82s, which does not properly reconstitute unicode
strings. Instrad, use utf8 bytestring to get the [Word8] to base64. This
passes unicode through perfectly, including any invalid filesystem encoded
characters.
Note that toB64 / fromB64 are also used for creds and cipher
embedding. It would be unfortunate if this change broke those uses.
For cipher embedding, note that ciphers can contain arbitrary bytes (should
really be using ByteString.Char8 there). Testing indicated it's not safe to
use the new fromB64 there; I think that characters were incorrectly
combined.
For credpair embedding, the username or password could contain unicode.
Before, that unicode would fail to round-trip through the b64.
So, I guess this is not going to break any embedded creds that worked
before.
This bug may have affected some creds before, and if so,
this change will not fix old ones, but should fix new ones at least.
diff --git a/Remote/Helper/Encryptable.hs b/Remote/Helper/Encryptable.hs
index c1243a5..2c1935b 100644
--- a/Remote/Helper/Encryptable.hs
+++ b/Remote/Helper/Encryptable.hs
@@ -20,13 +20,14 @@ module Remote.Helper.Encryptable (
 ) where
 
 import qualified Data.Map as M
+import qualified "dataenc" Codec.Binary.Base64 as B64
+import Data.Bits.Utils
 
 import Common.Annex
 import Types.Remote
 import Crypto
 import Types.Crypto
 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
@@ -137,9 +138,9 @@ cipherKey c = fmap make <$> remoteCipher c
 
 {- Stores an StorableCipher in a remote's configuration. -}
 storeCipher :: RemoteConfig -> StorableCipher -> RemoteConfig
-storeCipher c (SharedCipher t) = M.insert "cipher" (toB64 t) c
+storeCipher c (SharedCipher t) = M.insert "cipher" (toB64bs t) c
 storeCipher c (EncryptedCipher t _ ks) =
-	M.insert "cipher" (toB64 t) $ M.insert "cipherkeys" (showkeys ks) c
+	M.insert "cipher" (toB64bs t) $ M.insert "cipherkeys" (showkeys ks) c
   where
 	showkeys (KeyIds l) = intercalate "," l
 
@@ -149,11 +150,11 @@ extractCipher c = case (M.lookup "cipher" c,
 			M.lookup "cipherkeys" c,
 			M.lookup "encryption" c) of
 	(Just t, Just ks, encryption) | maybe True (== "hybrid") encryption ->
-		Just $ EncryptedCipher (fromB64 t) Hybrid (readkeys ks)
+		Just $ EncryptedCipher (fromB64bs t) Hybrid (readkeys ks)
 	(Just t, Just ks, Just "pubkey") ->
-		Just $ EncryptedCipher (fromB64 t) PubKey (readkeys ks)
+		Just $ EncryptedCipher (fromB64bs t) PubKey (readkeys ks)
 	(Just t, Nothing, encryption) | maybe True (== "shared") encryption ->
-		Just $ SharedCipher (fromB64 t)
+		Just $ SharedCipher (fromB64bs t)
 	_ -> Nothing
   where
 	readkeys = KeyIds . split ","
@@ -169,3 +170,14 @@ describeEncryption c = case extractCipher c of
 			PubKey -> Nothing
 			Hybrid -> Just "(hybrid mode)"
 		]
+
+{- Not using Utility.Base64 because these "Strings" are really
+ - bags of bytes and that would convert to unicode and not roung-trip
+ - cleanly. -}
+toB64bs :: String -> String
+toB64bs = B64.encode . s2w8
+
+fromB64bs :: String -> String
+fromB64bs s = fromMaybe bad $ w82s <$> B64.decode s
+  where
+	bad = error "bad base64 encoded data"
diff --git a/Test.hs b/Test.hs
index 290ff0b..5286bc6 100644
--- a/Test.hs
+++ b/Test.hs
@@ -71,6 +71,7 @@ import qualified Utility.Hash
 import qualified Utility.Scheduled
 import qualified Utility.HumanTime
 import qualified Utility.ThreadScheduler
+import qualified Utility.Base64
 import qualified Command.Uninit
 import qualified CmdLine.GitAnnex as GitAnnex
 #ifndef mingw32_HOST_OS
@@ -163,6 +164,7 @@ properties = localOption (QuickCheckTests 1000) $ testGroup "QuickCheck"
 	, testProperty "prop_branchView_legal" Logs.View.prop_branchView_legal
 	, testProperty "prop_view_roundtrips" Annex.View.prop_view_roundtrips
 	, testProperty "prop_viewedFile_rountrips" Annex.View.ViewedFile.prop_viewedFile_roundtrips
+	, testProperty "prop_b64_roundtrips" Utility.Base64.prop_b64_roundtrips
 	]
 
 {- These tests set up the test environment, but also test some basic parts
diff --git a/Types/MetaData.hs b/Types/MetaData.hs
index 2a6b3b8..1e8fb4a 100644
--- a/Types/MetaData.hs
+++ b/Types/MetaData.hs
@@ -224,6 +224,7 @@ data ModMeta
 	| DelMeta MetaField MetaValue
 	| SetMeta MetaField MetaValue -- removes any existing values
 	| MaybeSetMeta MetaField MetaValue -- when field has no existing value
+	deriving (Show)
 
 {- Applies a ModMeta, generating the new MetaData.
  - Note that the new MetaData does not include all the 
diff --git a/Utility/Base64.hs b/Utility/Base64.hs
index 56637a1..80cc122 100644
--- a/Utility/Base64.hs
+++ b/Utility/Base64.hs
@@ -1,24 +1,28 @@
-{- Simple Base64 access
+{- Simple Base64 encoding of Strings
  -
  - Copyright 2011 Joey Hess <id@joeyh.name>
  -
  - License: BSD-2-clause
  -}
 
-module Utility.Base64 (toB64, fromB64Maybe, fromB64) where
+module Utility.Base64 (toB64, fromB64Maybe, fromB64, prop_b64_roundtrips) where
 
-import "dataenc" Codec.Binary.Base64
-import Data.Bits.Utils
+import qualified "dataenc" Codec.Binary.Base64 as B64
 import Control.Applicative
 import Data.Maybe
+import qualified Data.ByteString.Lazy as L
+import Data.ByteString.Lazy.UTF8 (fromString, toString)
 
-toB64 :: String -> String		
-toB64 = encode . s2w8
+toB64 :: String -> String	
+toB64 = B64.encode . L.unpack . fromString
 
 fromB64Maybe :: String -> Maybe String
-fromB64Maybe s = w82s <$> decode s
+fromB64Maybe s = toString . L.pack <$> B64.decode s
 
 fromB64 :: String -> String
 fromB64 = fromMaybe bad . fromB64Maybe
   where
 	bad = error "bad base64 encoded data"
+
+prop_b64_roundtrips :: String -> Bool
+prop_b64_roundtrips s = s == fromB64 (toB64 s)
diff --git a/Utility/FileSystemEncoding.hs b/Utility/FileSystemEncoding.hs
index 844e81e..139b74f 100644
--- a/Utility/FileSystemEncoding.hs
+++ b/Utility/FileSystemEncoding.hs
@@ -14,6 +14,8 @@ module Utility.FileSystemEncoding (
 	decodeBS,
 	decodeW8,
 	encodeW8,
+	encodeW8NUL,
+	decodeW8NUL,
 	truncateFilePath,
 ) where
 
@@ -25,6 +27,7 @@ import System.IO.Unsafe
 import qualified Data.Hash.MD5 as MD5
 import Data.Word
 import Data.Bits.Utils
+import Data.List.Utils
 import qualified Data.ByteString.Lazy as L
 #ifdef mingw32_HOST_OS
 import qualified Data.ByteString.Lazy.UTF8 as L8
@@ -89,6 +92,9 @@ decodeBS = L8.toString
  - w82c produces a String, which may contain Chars that are invalid
  - unicode. From there, this is really a simple matter of applying the
  - file system encoding, only complicated by GHC's interface to doing so.
+ -
+ - Note that the encoding stops at any NUL in the input. FilePaths
+ - do not normally contain embedded NUL, but Haskell Strings may.
  -}
 {-# NOINLINE encodeW8 #-}
 encodeW8 :: [Word8] -> FilePath
@@ -101,6 +107,17 @@ encodeW8 w8 = unsafePerformIO $ do
 decodeW8 :: FilePath -> [Word8]
 decodeW8 = s2w8 . _encodeFilePath
 
+{- Like encodeW8 and decodeW8, but NULs are passed through unchanged. -}
+encodeW8NUL :: [Word8] -> FilePath
+encodeW8NUL = join nul . map encodeW8 . split (s2w8 nul)
+  where
+	nul = ['\NUL']
+
+decodeW8NUL :: FilePath -> [Word8]
+decodeW8NUL = join (s2w8 nul) . map decodeW8 . split nul
+  where
+	nul = ['\NUL']
+
 {- Truncates a FilePath to the given number of bytes (or less),
  - as represented on disk.
  -
diff --git a/debian/changelog b/debian/changelog
index 9fd6440..921c0ff 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -22,6 +22,11 @@ git-annex (5.2015022) UNRELEASED; urgency=medium
   * When re-execing git-annex, use current program location, rather than
     ~/.config/git-annex/program, when possible.
   * Submodules are now supported by git-annex!
+  * metadata: Fix encoding problem that led to mojibake when storing
+    metadata strings that contained both unicode characters and a space
+    (or '!') character.
+  * Also potentially fixes encoding problem when embedding credentials
+    that contain unicode characters.
 
  -- Joey Hess <id@joeyh.name>  Thu, 19 Feb 2015 14:16:03 -0400
 
diff --git a/doc/bugs/Unicode_characters_lost__47__converted_in_metadata.mdwn b/doc/bugs/Unicode_characters_lost__47__converted_in_metadata.mdwn

(Diff truncated)
Added a comment
diff --git a/doc/todo/Add_gitlab.com_as_cloud_provider/comment_2_441c879e7aa60eb74e3a881de9c4e8ea._comment b/doc/todo/Add_gitlab.com_as_cloud_provider/comment_2_441c879e7aa60eb74e3a881de9c4e8ea._comment
new file mode 100644
index 0000000..ce3541f
--- /dev/null
+++ b/doc/todo/Add_gitlab.com_as_cloud_provider/comment_2_441c879e7aa60eb74e3a881de9c4e8ea._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="Rasmus"
+ subject="comment 2"
+ date="2015-03-04T14:35:19Z"
+ content="""
+It easy to setup.  And it seems like as good a \"canned\" solution as box.net or whatever.  I don't know if I would use it for sensitive stuff, but for a couple of repos, it makes sense to use it.
+
+There seems to be some support for creating new projects (which I assume is repos) [here](http://doc.gitlab.com/ee/api/projects.html).
+"""]]

comment
diff --git a/doc/todo/Add_gitlab.com_as_cloud_provider/comment_1_0dad4b86cda93dd5ca0c4fb049ff6d97._comment b/doc/todo/Add_gitlab.com_as_cloud_provider/comment_1_0dad4b86cda93dd5ca0c4fb049ff6d97._comment
new file mode 100644
index 0000000..ab80ad5
--- /dev/null
+++ b/doc/todo/Add_gitlab.com_as_cloud_provider/comment_1_0dad4b86cda93dd5ca0c4fb049ff6d97._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2015-03-04T14:23:05Z"
+ content="""
+This uses ssh, so the repository address can be pasted into the webapp
+as a ssh server, and it should work already.
+
+It probably does make sense to add gitlab.com as a canned solution alongside
+box.com and rsync.net in the webapp.
+
+Since the remote will be a full git repository, it should prompt the user
+if they want to enable gcrypt to encrypt all the content client-side.
+
+If gitlab has a reasonable API for creating a new repository, the webapp
+could optionally use that, instead of needing the user to create one
+themselves.
+"""]]

diff --git a/doc/bugs/Unicode_characters_lost__47__converted_in_metadata.mdwn b/doc/bugs/Unicode_characters_lost__47__converted_in_metadata.mdwn
new file mode 100644
index 0000000..8d74751
--- /dev/null
+++ b/doc/bugs/Unicode_characters_lost__47__converted_in_metadata.mdwn
@@ -0,0 +1,15 @@
+### Please describe the problem.
+
+Unicode characters in metadata are pruned/converted/lost:
+
+    % git annex metadata -s caption='Unicode → … characters' test.W1z7M7.txt
+    metadata test.W1z7M7.txt
+      caption=Unicode  & characters
+      caption-lastchanged=2015-03-04@08-55-26
+      lastchanged=2015-03-04@08-55-26
+    ok
+    (Recording state in git...)
+
+### What version of git-annex are you using? On what operating system?
+
+5.20141125 Debian

groups
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 59229af..05fa247 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -234,6 +234,11 @@ Items sometimes go dark; this could be reflected by deleting the item
 from the repository. It's up to the clients what they do with the content
 of such Items.
 
+Client's repos could be put into groups to classify them. For example,
+there could be groups per continent, or for trust levels, or whatever.
+These can be used by [[preferred_content]] expressions to fine tune how
+Items are spread out amoung the available clients.
+
 ## other potential gotchas
 
 If any single Item is very large (eg, 10 terabytes), there may not be

typo
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 11c3003..59229af 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -114,7 +114,7 @@ easily delete files to free up space.
 
 1. Client runs `git annex sync --content`, which downloads as many
    Items from the IA as will fit in their disk's free space
-   (leaving some conigurable amount free in reserve by configuring
+   (leaving some configurable amount free in reserve by configuring
    annex.diskreserve)
 2. Note that [[numcopies|copies]] and [[preferred_content]] settings can be
    used to make clients only want to download an Item if it's not yet

clarification
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 5fe656f..11c3003 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -7,7 +7,7 @@ This is a fairly detailed design proposal for using git-annex to build
 
 The IA contains some 24 million Items.
 
-git repositories do not scale well past the 1-10 million file 
+git repositories do not scale well in the 1-10 million file 
 range, and very badly above that. Storing individual IA Items
 would strain git's scalability badly.
 

update
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index fe5b866..5fe656f 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -1,6 +1,8 @@
 This is a fairly detailed design proposal for using git-annex to build
 <http://archiveteam.org/index.php?title=INTERNETARCHIVE.BAK>
 
+[[!toc ]]
+
 ## sharding to scale
 
 The IA contains some 24 million Items.
@@ -33,6 +35,10 @@ them.
 
 * Add new shards as the IA continues to grow.
 
+Question: How many files are in IA across all Items? It might be better
+to use $item/$file rather than $item.tar as the unit that's stored in
+the git-annex repository. This would need more shards.
+
 ## the IA git repository
 
 We're building a pyramid of git-annex repositories, and at the tip
@@ -176,6 +182,23 @@ drill.
    (Remember to turn off the fire alarm by running
    `setpresentkey $key $iauuid 1`)
 
+## shard servers
+
+A server at the IA (or otherwise with a fast pipe) is needed to serve one or
+more shards. Let's consider what this server needs to have on it:
+
+* git and git-annex
+* ssh server
+* rsync
+* The git repository for the shard. Probably a few hundred mb?
+* The git update hook to filter out bad pushes.
+* Some way to get the content of a given Item from the IA 
+  when a client wants to download it. This probably means
+  generating the $item.tar file and buffering it to disk for a while.
+* So, enough disk to buffer a reasonable number of items.
+* Some way to learn when a new user has registered to access a shard,
+  so their ssh key is given access.
+
 ## other optional nice stuff
 
 The user running a client can delete some or all of their files at any
@@ -226,8 +249,8 @@ this seems excessive).
 There may be a thundering herd problem, where many clients end up
 downloading the same Item at the same time, and more copies than neecessary
 result. The next `git annex sync --content` in some of the
-redundant clients will notice this and drop that item, and presumably
-download some other item. However, it might be good to rate limit the
+redundant clients will notice this and drop that Item, and presumably
+download some other Item. However, it might be good to rate limit the
 number of concurrent downloads of a given item, to prevent this and perhaps
 other issues. This could be done by a wrapper around git-annex shell or
 perhaps a git-annex modification.

update
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 2152938..fe5b866 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -215,7 +215,8 @@ of such Items.
 
 If any single Item is very large (eg, 10 terabytes), there may not be
 any clients that can handle it. This could be dealt with by splitting up
-the item into smaller files.
+the item into smaller files. Word is there is a single 2 tb item, and a few
+more around 100 gb, so this is probably not a concern.
 
 A client could add other files to its local repo, and git-annex branch
 pushes would include junk data about those files. It should probably be

thundering herd
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index b193e1f..2152938 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -221,3 +221,12 @@ A client could add other files to its local repo, and git-annex branch
 pushes would include junk data about those files. It should probably be
 filtered out by the git update hook (rejecting the whole push because of
 this seems excessive).
+
+There may be a thundering herd problem, where many clients end up
+downloading the same Item at the same time, and more copies than neecessary
+result. The next `git annex sync --content` in some of the
+redundant clients will notice this and drop that item, and presumably
+download some other item. However, it might be good to rate limit the
+number of concurrent downloads of a given item, to prevent this and perhaps
+other issues. This could be done by a wrapper around git-annex shell or
+perhaps a git-annex modification.

update
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 68940cb..b193e1f 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -216,3 +216,8 @@ of such Items.
 If any single Item is very large (eg, 10 terabytes), there may not be
 any clients that can handle it. This could be dealt with by splitting up
 the item into smaller files.
+
+A client could add other files to its local repo, and git-annex branch
+pushes would include junk data about those files. It should probably be
+filtered out by the git update hook (rejecting the whole push because of
+this seems excessive).

item splitting
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 56f7486..68940cb 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -21,7 +21,7 @@ them.
   240 repositories.)
 
 * The IA is ~20 Petabytes large. Each shard would thus be around 8
-  Terabytes. (However, Items sizes will vary a lot, so there's the
+  Terabytes. (Item sizes will vary a lot, so there's the
   potential to get a shard that's unusually small or large. This could be
   dealt with when assigning Items to the shards, to balance sizes out.)
 
@@ -210,3 +210,9 @@ Clients will then download the new version of the Item.
 Items sometimes go dark; this could be reflected by deleting the item
 from the repository. It's up to the clients what they do with the content
 of such Items.
+
+## other potential gotchas
+
+If any single Item is very large (eg, 10 terabytes), there may not be
+any clients that can handle it. This could be dealt with by splitting up
+the item into smaller files.

update
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 3c1e961..56f7486 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -101,6 +101,9 @@ Note that a client could be assigned to multiple shards, rather than just
 one. Probably good to keep a pool of empty shards that have clients waiting
 for new Items to be added.
 
+Note that direct mode seems like a good idea because it lets the user
+easily delete files to free up space.
+
 ## distributing Items
 
 1. Client runs `git annex sync --content`, which downloads as many

diff --git a/doc/todo/Add_gitlab.com_as_cloud_provider.mdwn b/doc/todo/Add_gitlab.com_as_cloud_provider.mdwn
new file mode 100644
index 0000000..33c5c71
--- /dev/null
+++ b/doc/todo/Add_gitlab.com_as_cloud_provider.mdwn
@@ -0,0 +1,7 @@
+Hi,
+
+[I don't know if this should go to todo or bugs or should be plainly ignored.  Hope it's OK].
+
+Gitlab.com and Gitlab enterprise edition, but unfortunately not Gitlab community edition, now [provides git annex support](https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/).  It works fairly based for the repos I have enabled it on.  At the moment it's free, but one may have to pay for repos larger than 5Gb [in the future](https://about.gitlab.com/2015/02/22/gitlab-7-8-released/#comment-1870271594).
+
+Perhaps gitlab.com should be added to preconfigured cloud providers?

clarify
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 14888f7..3c1e961 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -74,7 +74,8 @@ To add an Item to the shard:
 
    The easy way is to write the tarball to disk in the shard's git repo,
    and "git annex add", but it's also possible to do this without ever
-   storing the tarball on disk.
+   storing the tarball on disk. (The tarball would then be reconstructed
+   on the fly each time a client requests to download it.)
 
 4. Update git-annex location tracking to indicate that this item
    is present in the Internet Archive.

drill
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 9c8dd84..14888f7 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -169,6 +169,8 @@ drill.
 5. To guard against bad actors, that restored Item should be checked with
    `git annex fsck`. If its checksum is good, it can be re-injected back
    into the IA. (Or, the fire drill was successful.)
+   (Remember to turn off the fire alarm by running
+   `setpresentkey $key $iauuid 1`)
 
 ## other optional nice stuff
 

link
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 9a540d1..9c8dd84 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -129,7 +129,8 @@ Check pushes of the git-annex branch. There are only a few files that
 clients can legitimately modify, and the modifications will always involve
 that client's UUID, not some other client's UUID. Reject anything shady.
 
-These checks can be done in a git `update` hook.
+These checks can be done in a git `update` hook. Rough estimate is that
+such a hook would be a couple hundred lines of code.
 
 ## verification
 

link
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index f987be5..9a540d1 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -106,7 +106,7 @@ for new Items to be added.
    Items from the IA as will fit in their disk's free space
    (leaving some conigurable amount free in reserve by configuring
    annex.diskreserve)
-2. Note that [[numcopies]] and [[preferred_content]] settings can be
+2. Note that [[numcopies|copies]] and [[preferred_content]] settings can be
    used to make clients only want to download an Item if it's not yet
    reached the desired number of copies. Lots of flexability here in
    git-annex.

clarify
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index b9a6a96..f987be5 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -92,7 +92,7 @@ When a client registers to participate:
 1. Generate a UUID, which is assigned to this client, and send it to the
    client, and assign that UUID to a particular shard.
 2. Send the client an appropriate auth token (eg, a locked down ssh private
-   key) to let them access the origin repository.
+   key) to let them access the shard's git repository (or all the shards).
 3. Client clones its assigned shard git repository,
    runs `git annex init reinit $UUID`, and enables direct mode.
 

update
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 968d02a..b9a6a96 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -193,6 +193,13 @@ Shards could have themes, and users could request to be part of the
 shard that includes Software, or Grateful Dead, etc. This might encourage
 users to devote more resources.
 
+Or, rather than doing a lucky dip and getting one or a couple shards,
+a user could clone em all, and pick just which Items to store.
+
 The contents of Items sometimes changes.
 This can be reflected by updating an Item's file in the git repository.
 Clients will then download the new version of the Item.
+
+Items sometimes go dark; this could be reflected by deleting the item
+from the repository. It's up to the clients what they do with the content
+of such Items.

devblog
diff --git a/doc/devblog/day_260__random_month.mdwn b/doc/devblog/day_260__random_month.mdwn
new file mode 100644
index 0000000..35ed32f
--- /dev/null
+++ b/doc/devblog/day_260__random_month.mdwn
@@ -0,0 +1,27 @@
+This month is going to be a bit more random than usual where git-annex
+development is concerned.
+
+* On Saturday, the [Seven Day Roguelike](http://7drl.org/) competition
+  begins, and I will be spending a week building a game in haskell,
+  to the exclusion of almost all other work.
+* On March 18th, I'll be at the [Boston Haskell User's group](http://www.meetup.com/Boston-Haskell/events/219298257/).
+  (Attending, not presenting.)
+* March 19-20, I'll be at Dartmouth visiting with the DataLad developers
+  and learning more about what it needs from git-annex.
+* March 21-22, I'll be at the FSF's [LibrePlanet](https://libreplanet.org/2015)
+  conference at MIT.
+
+Got started on the randomness today with this 
+[[design proposal for using git-annex to back up the entire Internet Archive|design/iabackup]].
+This is something the Archive Team is [considering taking on](http://archiveteam.org/index.php?title=INTERNETARCHIVE.BAK),
+and I had several hours driving and hiking to think about it and came up
+with a workable design. (Assuming large enough crowd of volenteers.)
+
+Don't know if it will happen, but it was a useful thought problem to see how
+git-annex works, and doesn't work in this unusual use case.
+
+One interesting thing to come out of that is that git-annex fsck does not
+currently make any record of successful fscks. In a very large distributed
+system, it can be useful to have successful fscks of an object's content recorded,
+by updating the timestamp in the location log to say "this repository still
+had the content at this time".

comment
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
index 4b11234..968d02a 100644
--- a/doc/design/iabackup.mdwn
+++ b/doc/design/iabackup.mdwn
@@ -17,7 +17,8 @@ them.
 
 * If each git repository holds 10 thousand items, that's 2400 repositories,
   which is not an unmanagable number. (For comparison, git.debian.org
-  has 18500 repositories.)
+  has 18500 repositories.) (100 thousand items would be the higher end, for
+  240 repositories.)
 
 * The IA is ~20 Petabytes large. Each shard would thus be around 8
   Terabytes. (However, Items sizes will vary a lot, so there's the

add
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
new file mode 100644
index 0000000..4b11234
--- /dev/null
+++ b/doc/design/iabackup.mdwn
@@ -0,0 +1,197 @@
+This is a fairly detailed design proposal for using git-annex to build
+<http://archiveteam.org/index.php?title=INTERNETARCHIVE.BAK>
+
+## sharding to scale
+
+The IA contains some 24 million Items.
+
+git repositories do not scale well past the 1-10 million file 
+range, and very badly above that. Storing individual IA Items
+would strain git's scalability badly.
+
+Solution: Create multiple git repositories, and split the Items amoung
+them.
+
+* Needs a map from an Item to its repository. (Could be stored in a
+  database, or whatever.)
+
+* If each git repository holds 10 thousand items, that's 2400 repositories,
+  which is not an unmanagable number. (For comparison, git.debian.org
+  has 18500 repositories.)
+
+* The IA is ~20 Petabytes large. Each shard would thus be around 8
+  Terabytes. (However, Items sizes will vary a lot, so there's the
+  potential to get a shard that's unusually small or large. This could be
+  dealt with when assigning Items to the shards, to balance sizes out.)
+
+* The Items in each shard are then distributed out to the clients who
+  have been assigned that shard. Clients will store varying amounts of
+  data, but probably under 1 Terabyte per client. And we want redundancy
+  (LOCKSS) -- say at least 3 copies. So, estimate around 25-100 clients need
+  to be assigned to each shard to get it backed up.
+
+* Add new shards as the IA continues to grow.
+
+## the IA git repository
+
+We're building a pyramid of git-annex repositories, and at the tip
+of this is a single git repository, which represents the entire Internet
+Archive.
+
+This IA git repository contains no files. But, git-annex in each of the
+~2400 shards knows about it, and by default every Item in every shard
+is recorded as having a copy present in the IA git repository.
+
+If the IA lost an Item somehow, this would be reflected by updating
+the git-annex location tracking to say the IA git repository no longer
+contains the item.
+
+Creating this repository is simple:
+
+	git init ia.git
+	cd ia.git
+	git annex init "The Internet Archive"
+	git annex trust .
+
+## creating the shards
+
+Each shard starts as a clone of the IA git repository.
+
+Items are added to the shard, either all at once, or perhaps on-demand.
+
+To add an Item to the shard:
+
+1. Create a (reproducible checksum) tarball of all the files in the Item
+   (probably excluding "derived" files).
+
+2. Checksum the tarball and derive a git-annex key, and add it to the git
+   repository.
+   
+   The symlink can have a name corresponding to the Item name.
+   (Eg  "LauraPoitrasCitizenfour.tar" for
+   <https://archive.org/details/LauraPoitrasCitizenfour>)
+
+   The easy way is to write the tarball to disk in the shard's git repo,
+   and "git annex add", but it's also possible to do this without ever
+   storing the tarball on disk.
+
+4. Update git-annex location tracking to indicate that this item
+   is present in the Internet Archive.
+
+   If $iauuid is the UUID of the IA git repository, the command
+   is: `setpresentkey $key $iauuid 1` (This command needs git-annex
+   5.20141231)
+
+5. git commit
+
+## adding a client
+
+When a client registers to participate:
+
+1. Generate a UUID, which is assigned to this client, and send it to the
+   client, and assign that UUID to a particular shard.
+2. Send the client an appropriate auth token (eg, a locked down ssh private
+   key) to let them access the origin repository.
+3. Client clones its assigned shard git repository,
+   runs `git annex init reinit $UUID`, and enables direct mode.
+
+Note that a client could be assigned to multiple shards, rather than just
+one. Probably good to keep a pool of empty shards that have clients waiting
+for new Items to be added.
+
+## distributing Items
+
+1. Client runs `git annex sync --content`, which downloads as many
+   Items from the IA as will fit in their disk's free space
+   (leaving some conigurable amount free in reserve by configuring
+   annex.diskreserve)
+2. Note that [[numcopies]] and [[preferred_content]] settings can be
+   used to make clients only want to download an Item if it's not yet
+   reached the desired number of copies. Lots of flexability here in
+   git-annex.
+3. git-annex will push back to the server an updated git-annex branch,
+   which will record when it has successfully stored an Item.
+
+## bad actors
+
+Clients can misbehave in probably many ways. The best defense for many
+misbehaviors is to distribute Items to enough different clients that we can
+trust some of them.
+
+The main git-annex specific misbehavior is that a client could try to push
+garbage information back to the origin repository on the server.
+
+To guard against this, the server will reject all pushes of branches other
+than the git-annex branch, which is the only one clients need to modify.
+
+Check pushes of the git-annex branch. There are only a few files that
+clients can legitimately modify, and the modifications will always involve
+that client's UUID, not some other client's UUID. Reject anything shady.
+
+These checks can be done in a git `update` hook.
+
+## verification
+
+We want a lightweight verification process, to verify that a client still
+has the data. This can be done using `git annex fsck`, which can be
+configured to eg, check each file only once per month.
+
+git-annex will need a modification here. Currently, a successful fsck
+does not leave any trace in the git-annex branch that it happened. But
+we want the server to track when a client is not fscking (the user probably
+dropped out).
+
+The modification is simple; just have a successful fsck
+update the timestamp in the fscked file's location log.
+It will probably take just a few hours to code.
+
+With that change, the server can check for files that not enough clients
+have verified they have recently, and distribute them to more clients.
+
+Note that bad actors can lie about this verification; it's not a proof they
+still have the file. But, a bad actor could prove they have a file, and
+refuse to give it back if the IA needed to restore the backup, too.
+
+## fire drill
+
+If we really want to test how well the system is working, we need a fire
+drill.
+
+1. Pick some Items that we'll assume the IA has lost in some disaster.
+2. Look up the shard the Item belongs to.
+3. Get the git-annex key of the Item, and tell git-annex it's been
+   lost from the IA, by running in its shard: `setpresentkey $key $iauuid 0`
+4. The next time a client runs `git annex sync --content`, it will notice
+   that the IA repo doesn't have the Item anymore. The client will then
+   send the Item back to the origin repo.
+5. To guard against bad actors, that restored Item should be checked with
+   `git annex fsck`. If its checksum is good, it can be re-injected back
+   into the IA. (Or, the fire drill was successful.)
+
+## other optional nice stuff
+
+The user running a client can delete some or all of their files at any
+time, to free up disk space. The next time `git-annex sync` runs on the client,
+it'll notice and let the server know, and other clients will then take
+over storing it. (Or if the git-annex assistant is run on the client,
+it would inform the server immediately.)
+
+The user is also free to move Items around (within the git repository
+directory), unpack Items to examine their contents, etc. This doesn't
+affect anyone else.
+
+Offline storage is supported. As long as the user can spin it up from time
+to time to run `git annex fsck`.
+
+More advanced users might have multiple repositories on different disks.
+Each has their own UUID, and they could move Items around between them as
+desired; this would be communicated back to the origin repository
+automatically.
+
+Shards could have themes, and users could request to be part of the
+shard that includes Software, or Grateful Dead, etc. This might encourage
+users to devote more resources.
+

(Diff truncated)
Added a comment: window manager on 1st machine
diff --git a/doc/assistant/comment_6_70193bbaa5d60b829d7636748c641104._comment b/doc/assistant/comment_6_70193bbaa5d60b829d7636748c641104._comment
new file mode 100644
index 0000000..00db92d
--- /dev/null
+++ b/doc/assistant/comment_6_70193bbaa5d60b829d7636748c641104._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmN1fkq65FL5gtBB6qFmEKWiyl20OutvDI"
+ nickname="Niklaas"
+ subject="window manager on 1st machine"
+ date="2015-03-03T21:30:53Z"
+ content="""
+Not related to git-annex, but I was just wondering: What window manager are you using on the first machine? Looks like a tile windows manager but you are using XFCE?!
+"""]]

Added a comment
diff --git a/doc/forum/Per_directory_numcopies/comment_1_33497e3a46926595920eb3dcdb58447c._comment b/doc/forum/Per_directory_numcopies/comment_1_33497e3a46926595920eb3dcdb58447c._comment
new file mode 100644
index 0000000..cb6a957
--- /dev/null
+++ b/doc/forum/Per_directory_numcopies/comment_1_33497e3a46926595920eb3dcdb58447c._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="markusk"
+ subject="comment 1"
+ date="2015-03-03T21:04:55Z"
+ content="""
+Look for \".gitattributes\" files in http://git-annex.branchable.com/walkthrough/backups/ and the \"annex.numcopies\" option to use inside these files. You can place the files at any location. 
+
+
+"""]]

diff --git a/doc/forum/annex.largefiles:_two_quesitons.mdwn b/doc/forum/annex.largefiles:_two_quesitons.mdwn
new file mode 100644
index 0000000..170aad7
--- /dev/null
+++ b/doc/forum/annex.largefiles:_two_quesitons.mdwn
@@ -0,0 +1,9 @@
+Hi,
+
+I have two questions related to `annex.largefiles`, for which I was unable to find the answers.
+
+1. Is there a way to transfer my `annex.largefiles` from one repo to the other?  I noticed that the property was not adopted when cloning a repo.
+2. On one repo I noticed that I had not set a good `annex.largefiles`.  Can I tell `git annex` to *reevaluate* whether a file should be controlled as a "normal" file or a "largefile" give the updated `annex.largefiles`?
+
+Thanks,
+Rasmus

poll vote (Amazon Glacier (done))
diff --git a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
index 02e7b02..c567640 100644
--- a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
+++ b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
@@ -6,7 +6,7 @@ locally paired systems, and remote servers with rsync.
 Help me prioritize my work: What special remote would you most like
 to use with the git-annex assistant?
 
-[[!poll open=yes 19 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 16 "OpenStack SWIFT" 36 "Google Drive"]]
+[[!poll open=yes 18 "Amazon S3 (done)" 13 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 16 "OpenStack SWIFT" 36 "Google Drive"]]
 
 This poll is ordered with the options I consider easiest to build
 listed first. Mostly because git-annex already supports them and they

poll vote (Amazon S3 (done))
diff --git a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
index 9cdc031..02e7b02 100644
--- a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
+++ b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
@@ -6,7 +6,7 @@ locally paired systems, and remote servers with rsync.
 Help me prioritize my work: What special remote would you most like
 to use with the git-annex assistant?
 
-[[!poll open=yes 18 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 16 "OpenStack SWIFT" 36 "Google Drive"]]
+[[!poll open=yes 19 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 16 "OpenStack SWIFT" 36 "Google Drive"]]
 
 This poll is ordered with the options I consider easiest to build
 listed first. Mostly because git-annex already supports them and they

diff --git a/doc/forum/Per_directory_numcopies.mdwn b/doc/forum/Per_directory_numcopies.mdwn
new file mode 100644
index 0000000..a151c93
--- /dev/null
+++ b/doc/forum/Per_directory_numcopies.mdwn
@@ -0,0 +1,5 @@
+I have some photo backups that I would like to have 2 copies but the rest can be one. 
+
+Is there any way to create numcopies rules per directory, rather than by filetype?
+
+I really enjoy this program Joey, thanks!

devblog
diff --git a/doc/devblog/day_259__submodules.mdwn b/doc/devblog/day_259__submodules.mdwn
new file mode 100644
index 0000000..a2178a8
--- /dev/null
+++ b/doc/devblog/day_259__submodules.mdwn
@@ -0,0 +1,8 @@
+I had thought that git-annex and git submodules couldn't mix. However,
+looking at it again, it turned out to be possible to use git-annex quite
+sanely in a submodule, with just a little tweaking of how git normally
+configures the repository. Details of this still experimental feature are in
+[[/submodules]].
+
+There is still some work to be done to make git-annex work with submodules
+in repositories on filesystems that don't support symlinks.

Submodules are now supported by git-annex!
Seems to work, but still experimental until it's been tested more.
When repositories are on filesystems not supporting symlinks, the .git dir
symlink trick cannot be used. Since we're going to be in direct mode
anyway, the .git dir symlink is not strictly needed.
However, I have not fixed the code that creates new annex symlinks to
handle this case -- the committed symlinks will be wrong.
git annex sync happens to currently fail in a submodule using direct mode,
because there's no HEAD ref. That also needs to be dealt with to get
this fully working in crippled filesystems.
Leaving http://github.com/datalad/datalad/issues/44 open until these issues
are dealt with.
diff --git a/Annex.hs b/Annex.hs
index f85c7e0..e1a32fa 100644
--- a/Annex.hs
+++ b/Annex.hs
@@ -37,7 +37,7 @@ module Annex (
 import Common
 import qualified Git
 import qualified Git.Config
-import Annex.Direct.Fixup
+import Annex.Fixup
 import Git.CatFile
 import Git.CheckAttr
 import Git.CheckIgnore
@@ -183,12 +183,13 @@ newState c r = AnnexState
 	}
 
 {- Makes an Annex state object for the specified git repo.
- - Ensures the config is read, if it was not already. -}
+ - Ensures the config is read, if it was not already, and performs
+ - any necessary git repo fixups. -}
 new :: Git.Repo -> IO AnnexState
 new r = do
 	r' <- Git.Config.read =<< Git.relPath r
 	let c = extractGitConfig r'
-	newState c <$> if annexDirect c then fixupDirect r' else return r'
+	newState c <$> fixupRepo r' c
 
 {- Performs an action in the Annex monad from a starting state,
  - returning a new state. -}
diff --git a/Annex/Direct.hs b/Annex/Direct.hs
index 1c733cb..bb470e0 100644
--- a/Annex/Direct.hs
+++ b/Annex/Direct.hs
@@ -406,7 +406,25 @@ setDirect wantdirect = do
 	Annex.changeGitConfig $ \c -> c { annexDirect = wantdirect }
   where
 	val = Git.Config.boolConfig wantdirect
-	setbare = setConfig (ConfigKey Git.Config.coreBare) val
+	coreworktree = ConfigKey "core.worktree"
+	indirectworktree = ConfigKey "core.indirect-worktree"
+	setbare = do
+		-- core.worktree is not compatable with
+		-- core.bare; git does not allow both to be set, so
+		-- unset it when enabling direct mode, caching in
+		-- core.indirect-worktree
+		if wantdirect
+			then moveconfig coreworktree indirectworktree
+			else moveconfig indirectworktree coreworktree
+		setConfig (ConfigKey Git.Config.coreBare) val
+	moveconfig src dest = do
+		v <- getConfigMaybe src
+		case v of
+			Nothing -> noop
+			Just wt -> do
+				unsetConfig src
+				setConfig dest wt
+				reloadConfig
 
 {- Since direct mode sets core.bare=true, incoming pushes could change
  - the currently checked out branch. To avoid this problem, HEAD
diff --git a/Annex/Direct/Fixup.hs b/Annex/Direct/Fixup.hs
deleted file mode 100644
index 793f92e..0000000
--- a/Annex/Direct/Fixup.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{- git-annex direct mode guard fixup
- -
- - Copyright 2013 Joey Hess <id@joeyh.name>
- -
- - Licensed under the GNU GPL version 3 or higher.
- -}
-
-module Annex.Direct.Fixup where
-
-import Git.Types
-import Git.Config
-import qualified Git.Construct as Construct
-import Utility.Path
-import Utility.SafeCommand
-
-{- Direct mode repos have core.bare=true, but are not really bare.
- - Fix up the Repo to be a non-bare repo, and arrange for git commands
- - run by git-annex to be passed parameters that override this setting. -}
-fixupDirect :: Repo -> IO Repo
-fixupDirect r@(Repo { location = l@(Local { gitdir = d, worktree = Nothing }) }) = do
-	let r' = r
-		{ location = l { worktree = Just (parentDir d) }
-		, gitGlobalOpts = gitGlobalOpts r ++
-			[ Param "-c"
-			, Param $ coreBare ++ "=" ++ boolConfig False
-			]
-		}
-	-- Recalc now that the worktree is correct.
-	rs' <- Construct.fromRemotes r'
-	return $ r' { remotes = rs' }
-fixupDirect r = return r
diff --git a/Annex/Fixup.hs b/Annex/Fixup.hs
new file mode 100644
index 0000000..cda3646
--- /dev/null
+++ b/Annex/Fixup.hs
@@ -0,0 +1,86 @@
+{- git-annex repository fixups
+ -
+ - Copyright 2013, 2015 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Annex.Fixup where
+
+import Git.Types
+import Git.Config
+import Types.GitConfig
+import qualified Git.Construct as Construct
+import Utility.Path
+import Utility.SafeCommand
+import Utility.Directory
+import Utility.PosixFiles
+import Utility.Exception
+
+import System.IO
+import System.FilePath
+import System.Directory
+import Data.List
+import Control.Monad
+import Control.Monad.IfElse
+import qualified Data.Map as M
+
+fixupRepo :: Repo -> GitConfig -> IO Repo
+fixupRepo r c = do
+	r' <- fixupSubmodule r c
+	if annexDirect c
+		then fixupDirect r'
+		else return r'
+
+{- Direct mode repos have core.bare=true, but are not really bare.
+ - Fix up the Repo to be a non-bare repo, and arrange for git commands
+ - run by git-annex to be passed parameters that override this setting. -}
+fixupDirect :: Repo -> IO Repo
+fixupDirect r@(Repo { location = l@(Local { gitdir = d, worktree = Nothing }) }) = do
+	let r' = r
+		{ location = l { worktree = Just (parentDir d) }
+		, gitGlobalOpts = gitGlobalOpts r ++
+			[ Param "-c"
+			, Param $ coreBare ++ "=" ++ boolConfig False
+			]
+		}
+	-- Recalc now that the worktree is correct.
+	rs' <- Construct.fromRemotes r'
+	return $ r' { remotes = rs' }
+fixupDirect r = return r
+
+{- Submodules have their gitdir containing ".git/modules/", and
+ - have core.worktree set, and also have a .git file in the top
+ - of the repo. 
+ -
+ - We need to unset core.worktree, and change the .git file into a
+ - symlink to the git directory. This way, annex symlinks will be
+ - of the usual .git/annex/object form, and will consistently work
+ - whether a repo is used as a submodule or not, and wheverever the
+ - submodule is mounted.
+ -
+ - When the filesystem doesn't support symlinks, we cannot make .git
+ - into a symlink. In this case, we merely adjust the Repo so that
+ - symlinks to objects that get checked in will be in the right form.
+ -}
+fixupSubmodule :: Repo -> GitConfig -> IO Repo
+fixupSubmodule r@(Repo { location = l@(Local { worktree = Just w, gitdir = d }) }) c
+	| (".git" </> "modules") `isInfixOf` d = do
+		when (coreSymlinks c) $
+			replacedotgit
+				`catchNonAsync` \_e -> hPutStrLn stderr
+					"warning: unable to convert submodule to form that will work with git-annex"
+		return $ r
+			{ location = if coreSymlinks c
+				then l { gitdir = dotgit }
+				else l
+			, config = M.delete "core.worktree" (config r)
+			}
+  where
+	dotgit = w </> ".git"
+	replacedotgit = whenM (doesFileExist dotgit) $ do
+		nukeFile dotgit
+		createSymbolicLink (w </> d) dotgit
+		maybe (error "unset core.worktree failed") (\_ -> return ())
+			=<< Git.Config.unset "core.worktree" r
+fixupSubmodule r _ = return r
diff --git a/Config.hs b/Config.hs
index 29135ed..d9ad80e 100644
--- a/Config.hs
+++ b/Config.hs
@@ -37,13 +37,9 @@ setConfig (ConfigKey key) value = do
 reloadConfig :: Annex ()
 reloadConfig = Annex.changeGitRepo =<< inRepo Git.Config.reRead
 
-{- Unsets a git config setting. (Leaves it in state currently.) -}
+{- Unsets a git config setting. (Leaves it in state.) -}
 unsetConfig :: ConfigKey -> Annex ()

(Diff truncated)
diff --git a/doc/bugs/Windows:_Annex_can_not_get_files.mdwn b/doc/bugs/Windows:_Annex_can_not_get_files.mdwn
new file mode 100644
index 0000000..8f63613
--- /dev/null
+++ b/doc/bugs/Windows:_Annex_can_not_get_files.mdwn
@@ -0,0 +1,160 @@
+### Please describe the problem.
+git annex on windows does not seem to be able to get files from one (local) repository to another (also local) if the remote contains a drive letter (or generally a : in the path)
+
+### What steps will reproduce the problem?
+0. c:\> git init annex1
+0. c:\> cd annex1
+0. c:\annex1\> git annex init dir1
+0. c:\annex1\> echo "This is a git annex repository" > README.txt
+0. c:\annex1\> git annex add README.txt
+0. c:\annex1\> git annex sync
+0. c:\annex1\> cd \
+1. c:\> git init annex2
+1. c:\> cd annex2
+1. c:\annex2\> git annex init dir2
+1. c:\annex2\> git remote add dir1 c:\annex1
+1. c:\annex2\> git annex sync dir1
+2. c:\annex2\> git annex get README.txt
+
+### What version of git-annex are you using? On what operating system?
+C:\annex2>git version
+git version 1.9.4.msysgit.0
+
+C:\annex2>git annex version
+git-annex version: 5.20150113-gcf247cf
+build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feed
+s Quvi TDFA CryptoHash TorrentParser
+key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SH
+A256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
+remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glac
+ier ddar hook external
+local repository version: 5
+supported repository version: 5
+upgrade supported from repository versions: 2 3 4
+
+
+### Please provide any additional information below.
+
+[[!format sh """
+C:\>git init annex1
+Initialized empty Git repository in C:/annex1/.git/
+
+C:\>cd annex1
+
+C:\annex1>git annex init dir1
+init dir1
+  Detected a filesystem without fifo support.
+
+  Disabling ssh connection caching.
+
+  Detected a crippled filesystem.
+
+  Enabling direct mode.
+ok
+(Recording state in git...)
+
+C:\annex1>echo "This is a git annex repository" > README.txt
+
+C:\annex1>git annex add README.txt
+add README.txt ok
+(Recording state in git...)
+
+C:\annex1>git annex sync
+commit  ok
+
+C:\annex1>cd \
+
+C:\>git init annex2
+Initialized empty Git repository in C:/annex2/.git/
+
+C:\>cd annex2
+
+C:\annex2>git annex init dir2
+init dir2
+  Detected a filesystem without fifo support.
+
+  Disabling ssh connection caching.
+
+  Detected a crippled filesystem.
+
+  Enabling direct mode.
+ok
+(Recording state in git...)
+
+C:\annex2>git remote add dir1 c:\annex1
+
+C:\annex2>git annex sync dir1
+commit  ok
+pull dir1
+warning: no common commits
+remote: Counting objects: 13, done.
+remote: Compressing objects: 100% (9/9), done.
+remote: Total 13 (delta 1), reused 0 (delta 0)
+Unpacking objects: 100% (13/13), done.
+From c:\annex1
+ * [new branch]      annex/direct/master -> dir1/annex/direct/master
+ * [new branch]      git-annex  -> dir1/git-annex
+ * [new branch]      master     -> dir1/master
+ * [new branch]      synced/master -> dir1/synced/master
+
+Merge made by the 'recursive' strategy.
+ README.txt | 1 +
+ 1 file changed, 1 insertion(+)
+ create mode 120000 README.txt
+
+Already up-to-date.
+ok
+(merging dir1/git-annex into git-annex...)
+(Recording state in git...)
+push dir1
+Counting objects: 15, done.
+Delta compression using up to 4 threads.
+Compressing objects: 100% (10/10), done.
+Writing objects: 100% (12/12), 1.18 KiB | 0 bytes/s, done.
+Total 12 (delta 4), reused 0 (delta 0)
+To c:\annex1
+   a7d2b83..0e86493  annex/direct/master -> synced/master
+ * [new branch]      git-annex -> synced/git-annex
+ok
+
+C:\annex2>git annex get README.txt
+get README.txt (not available)
+  Try making some of these repositories available:
+        f005c222-3e80-46a3-81a2-72c6cae18035 -- dir1              <<<---- WTF: It's c:\annex1
+failed
+git-annex: get: 1 failed
+
+C:\annex2>git annex list
+here
+|dir1
+||web
+|||bittorrent
+||||
+____ README.txt                                                   <<<----- WTF2: Why doesn't annex2 know that annex1 has a copy?
+
+C:\annex2>git annex whereis README.txt
+whereis README.txt (1 copy)
+        f005c222-3e80-46a3-81a2-72c6cae18035 -- dir1
+ok
+
+C:\annex2>cd \annex1
+
+C:\annex1>git annex list
+(merging synced/git-annex into git-annex...)
+here
+|web
+||bittorrent
+|||
+X__ README.txt                                                    <<<--- But annex1 knows where it is.
+
+C:\annex1>git annex sync
+commit  ok
+merge synced/master
+Updating a7d2b83..0e86493
+Fast-forward
+error: duplicate parent 0e86493f9431d6df13ef49831e00b22be93e509c ignored              <<<---- Could this be the problem?
+ok
+
+C:\annex1>cd \annex2
+
+"""]]

poll vote (OpenStack SWIFT)
diff --git a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
index 006266d..9cdc031 100644
--- a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
+++ b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
@@ -6,7 +6,7 @@ locally paired systems, and remote servers with rsync.
 Help me prioritize my work: What special remote would you most like
 to use with the git-annex assistant?
 
-[[!poll open=yes 18 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 15 "OpenStack SWIFT" 36 "Google Drive"]]
+[[!poll open=yes 18 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 16 "OpenStack SWIFT" 36 "Google Drive"]]
 
 This poll is ordered with the options I consider easiest to build
 listed first. Mostly because git-annex already supports them and they

poll vote (OpenStack SWIFT)
diff --git a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
index a1f2067..006266d 100644
--- a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
+++ b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
@@ -6,7 +6,7 @@ locally paired systems, and remote servers with rsync.
 Help me prioritize my work: What special remote would you most like
 to use with the git-annex assistant?
 
-[[!poll open=yes 18 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 14 "OpenStack SWIFT" 36 "Google Drive"]]
+[[!poll open=yes 18 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 25 "Tahoe-LAFS" 15 "OpenStack SWIFT" 36 "Google Drive"]]
 
 This poll is ordered with the options I consider easiest to build
 listed first. Mostly because git-annex already supports them and they

applied patch
diff --git a/doc/todo/Shorten_long_file_names_preventing_git_checkout.mdwn b/doc/todo/Shorten_long_file_names_preventing_git_checkout.mdwn
index 6f8a68d..4b618e7 100644
--- a/doc/todo/Shorten_long_file_names_preventing_git_checkout.mdwn
+++ b/doc/todo/Shorten_long_file_names_preventing_git_checkout.mdwn
@@ -2,483 +2,13 @@ Submitting here from https://github.com/joeyh/git-annex/pull/36
 
     commit 05b7e0d2e87c1c92df773d72ee0ac7c9638be058
     Author: Eric OConnor <eric@oco.nnor.org>
-    Date:   Sat Feb 28 23:14:50 2015 -0700
 
-        Allow this repository to be checked out in filesystems with 255 char filename limits
-
-    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn
-    new file mode 100644
-    index 0000000..69732a7
-    --- /dev/null
-    +++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn
-    @@ -0,0 +1,46 @@
-    +### Please describe the problem.
-    +
-    +
-    +some time ago i was using the webapp bound to a dedicated port number to get around firewall reconfig. Now after some time without using the webapp i'm using it again and when i start it with 
-    +
-    +     git-annex webapp --listen=192.168.21.12:46199
-    +
-    +it never starts but just keeps waiting forever(?) 
-    +
-    +Update:(to clarify - the following works fine but results in the "random" port "problem")
-    +
-    +    git-annex webapp --listen=192.168.21.12
-    +
-    +
-    +
-    +
-    +### What steps will reproduce the problem?
-    +
-    +
-    +git-annex webapp --listen=192.168.21.12:46199
-    +
-    +
-    +### What version of git-annex are you using? On what operating system?
-    +
-    +
-    +version 5.20140716-g8c14ba8 on debian wheezy using your pre build static tar archive. 
-    +
-    +### Please provide any additional information below.
-    +
-    +[[!format sh """
-    +# If you can, paste a complete transcript of the problem occurring here.
-    +# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
-    +
-    +
-    +the log output is the following 3 lines 
-    +
-    +[2014-07-23 16:41:45 CEST] main: starting assistant version 5.20140716-g8c14ba8
-    +WebApp crashed: getAddrInfo: does not exist (Name or service not known)
-    +[2014-07-23 16:41:45 CEST] WebApp: warning WebApp crashed: getAddrInfo: does not exist (Name or service not known)
-    +
-    +
-    +
-    +# End of transcript or log.
-    +"""]]
-    +
-    +> [[done]] --[[Joey]] 
-    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
-    new file mode 100644
-    index 0000000..5808c56
-    --- /dev/null
-    +++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
-    @@ -0,0 +1,10 @@
-    +[[!comment format=mdwn
-    + username="http://joeyh.name/"
-    + ip="24.159.78.125"
-    + subject="comment 1"
-    + date="2014-07-23T22:10:37Z"
-    + content="""
-    +Support for --listen with a port was removed in version 5.20140306, since it was buggy. In particular, when the webapp creates a new repository, it needs to switch to a new port to serve that repository, so specifying a single port won't work.
-    +
-    +Instead, when annex.listen or --listen specifies the address to listen on, `git annex webapp` will print out the url to use to open it, including the port it picked. This could be used in a script, or clicked on in the terminal to open a local browser when running the webapp on a remote host.
-    +"""]]
-    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
-    new file mode 100644
-    index 0000000..2dd9885
-    --- /dev/null
-    +++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
-    @@ -0,0 +1,8 @@
-    +[[!comment format=mdwn
-    + username="markusk"
-    + ip="79.243.250.79"
-    + subject="comment 2"
-    + date="2014-07-23T23:18:37Z"
-    + content="""
-    +Thank you for the info! Will add the port grep to my auth grep script as you suggested. 
-    +"""]]
-    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn
-    deleted file mode 100644
-    index 69732a7..0000000
-    --- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn
-    +++ /dev/null
-    @@ -1,46 +0,0 @@
-    -### Please describe the problem.
-    -
-    -
-    -some time ago i was using the webapp bound to a dedicated port number to get around firewall reconfig. Now after some time without using the webapp i'm using it again and when i start it with 
-    -
-    -     git-annex webapp --listen=192.168.21.12:46199
-    -
-    -it never starts but just keeps waiting forever(?) 
-    -
-    -Update:(to clarify - the following works fine but results in the "random" port "problem")
-    -
-    -    git-annex webapp --listen=192.168.21.12
-    -
-    -
-    -
-    -
-    -### What steps will reproduce the problem?
-    -
-    -
-    -git-annex webapp --listen=192.168.21.12:46199
-    -
-    -
-    -### What version of git-annex are you using? On what operating system?
-    -
-    -
-    -version 5.20140716-g8c14ba8 on debian wheezy using your pre build static tar archive. 
-    -
-    -### Please provide any additional information below.
-    -
-    -[[!format sh """
-    -# If you can, paste a complete transcript of the problem occurring here.
-    -# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
-    -
-    -
-    -the log output is the following 3 lines 
-    -
-    -[2014-07-23 16:41:45 CEST] main: starting assistant version 5.20140716-g8c14ba8
-    -WebApp crashed: getAddrInfo: does not exist (Name or service not known)
-    -[2014-07-23 16:41:45 CEST] WebApp: warning WebApp crashed: getAddrInfo: does not exist (Name or service not known)
-    -
-    -
-    -
-    -# End of transcript or log.
-    -"""]]
-    -
-    -> [[done]] --[[Joey]] 
-    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
-    deleted file mode 100644
-    index 5808c56..0000000
-    --- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
-    +++ /dev/null
-    @@ -1,10 +0,0 @@
-    -[[!comment format=mdwn
-    - username="http://joeyh.name/"
-    - ip="24.159.78.125"
-    - subject="comment 1"
-    - date="2014-07-23T22:10:37Z"
-    - content="""
-    -Support for --listen with a port was removed in version 5.20140306, since it was buggy. In particular, when the webapp creates a new repository, it needs to switch to a new port to serve that repository, so specifying a single port won't work.
-    -
-    -Instead, when annex.listen or --listen specifies the address to listen on, `git annex webapp` will print out the url to use to open it, including the port it picked. This could be used in a script, or clicked on in the terminal to open a local browser when running the webapp on a remote host.
-    -"""]]
-    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
-    deleted file mode 100644
-    index 2dd9885..0000000
-    --- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
-    +++ /dev/null
-    @@ -1,8 +0,0 @@
-    -[[!comment format=mdwn
-    - username="markusk"
-    - ip="79.243.250.79"
-    - subject="comment 2"
-    - date="2014-07-23T23:18:37Z"
-    - content="""
-    -Thank you for the info! Will add the port grep to my auth grep script as you suggested. 
-    -"""]]
-    diff --git a/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn b/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn
-    new file mode 100644
-    index 0000000..dae654d
-    --- /dev/null
-    +++ b/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn
-    @@ -0,0 +1,63 @@
-    +### What steps will reproduce the problem?
-    +[[!format sh """
-    +C:\Users\Bruno>mkdir annex
-    +
-    +C:\Users\Bruno>cd annex
-    +
-    +C:\Users\Bruno\annex>git init
-    +Initialized empty Git repository in C:/Users/Bruno/annex/.git/
-    +
-    +C:\Users\Bruno\annex>git annex init
-    +init
-    +  Detected a crippled filesystem.
-    +
-    +  Enabling direct mode.
-    +
-    +  Detected a filesystem without fifo support.
-    +
-    +  Disabling ssh connection caching.

(Diff truncated)
removed
diff --git a/doc/forum/Create_a_new_set_of_clones_in_different_machines_that_already_have_all_the_data.mdwn b/doc/forum/Create_a_new_set_of_clones_in_different_machines_that_already_have_all_the_data.mdwn
deleted file mode 100644
index 3336b18..0000000
--- a/doc/forum/Create_a_new_set_of_clones_in_different_machines_that_already_have_all_the_data.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Hello.
-
-I've been looking for a while, but I can't find any documentation for my use case.
-
-Currently I have several TiB of information synchronized in different geographic locations with Bittorrent Sync.
-
-I want to switch to git-annex for this purpose, but given the amount of data and the relatively slow pipes between the boxes, a standard init-clone-get flow would take weeks to complete.
-
-Is there a way to create the clones separately on each box, so there's no need to redistribute already distributed data?
-
-Thanks in advance,
-Fer.

diff --git a/doc/forum/Create_a_new_set_of_clones_in_different_machines_that_already_have_all_the_data.mdwn b/doc/forum/Create_a_new_set_of_clones_in_different_machines_that_already_have_all_the_data.mdwn
new file mode 100644
index 0000000..3336b18
--- /dev/null
+++ b/doc/forum/Create_a_new_set_of_clones_in_different_machines_that_already_have_all_the_data.mdwn
@@ -0,0 +1,12 @@
+Hello.
+
+I've been looking for a while, but I can't find any documentation for my use case.
+
+Currently I have several TiB of information synchronized in different geographic locations with Bittorrent Sync.
+
+I want to switch to git-annex for this purpose, but given the amount of data and the relatively slow pipes between the boxes, a standard init-clone-get flow would take weeks to complete.
+
+Is there a way to create the clones separately on each box, so there's no need to redistribute already distributed data?
+
+Thanks in advance,
+Fer.

diff --git a/doc/todo/Shorten_long_file_names_preventing_git_checkout.mdwn b/doc/todo/Shorten_long_file_names_preventing_git_checkout.mdwn
new file mode 100644
index 0000000..6f8a68d
--- /dev/null
+++ b/doc/todo/Shorten_long_file_names_preventing_git_checkout.mdwn
@@ -0,0 +1,484 @@
+Submitting here from https://github.com/joeyh/git-annex/pull/36
+
+    commit 05b7e0d2e87c1c92df773d72ee0ac7c9638be058
+    Author: Eric OConnor <eric@oco.nnor.org>
+    Date:   Sat Feb 28 23:14:50 2015 -0700
+
+        Allow this repository to be checked out in filesystems with 255 char filename limits
+
+    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn
+    new file mode 100644
+    index 0000000..69732a7
+    --- /dev/null
+    +++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn
+    @@ -0,0 +1,46 @@
+    +### Please describe the problem.
+    +
+    +
+    +some time ago i was using the webapp bound to a dedicated port number to get around firewall reconfig. Now after some time without using the webapp i'm using it again and when i start it with 
+    +
+    +     git-annex webapp --listen=192.168.21.12:46199
+    +
+    +it never starts but just keeps waiting forever(?) 
+    +
+    +Update:(to clarify - the following works fine but results in the "random" port "problem")
+    +
+    +    git-annex webapp --listen=192.168.21.12
+    +
+    +
+    +
+    +
+    +### What steps will reproduce the problem?
+    +
+    +
+    +git-annex webapp --listen=192.168.21.12:46199
+    +
+    +
+    +### What version of git-annex are you using? On what operating system?
+    +
+    +
+    +version 5.20140716-g8c14ba8 on debian wheezy using your pre build static tar archive. 
+    +
+    +### Please provide any additional information below.
+    +
+    +[[!format sh """
+    +# If you can, paste a complete transcript of the problem occurring here.
+    +# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+    +
+    +
+    +the log output is the following 3 lines 
+    +
+    +[2014-07-23 16:41:45 CEST] main: starting assistant version 5.20140716-g8c14ba8
+    +WebApp crashed: getAddrInfo: does not exist (Name or service not known)
+    +[2014-07-23 16:41:45 CEST] WebApp: warning WebApp crashed: getAddrInfo: does not exist (Name or service not known)
+    +
+    +
+    +
+    +# End of transcript or log.
+    +"""]]
+    +
+    +> [[done]] --[[Joey]] 
+    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
+    new file mode 100644
+    index 0000000..5808c56
+    --- /dev/null
+    +++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
+    @@ -0,0 +1,10 @@
+    +[[!comment format=mdwn
+    + username="http://joeyh.name/"
+    + ip="24.159.78.125"
+    + subject="comment 1"
+    + date="2014-07-23T22:10:37Z"
+    + content="""
+    +Support for --listen with a port was removed in version 5.20140306, since it was buggy. In particular, when the webapp creates a new repository, it needs to switch to a new port to serve that repository, so specifying a single port won't work.
+    +
+    +Instead, when annex.listen or --listen specifies the address to listen on, `git annex webapp` will print out the url to use to open it, including the port it picked. This could be used in a script, or clicked on in the terminal to open a local browser when running the webapp on a remote host.
+    +"""]]
+    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
+    new file mode 100644
+    index 0000000..2dd9885
+    --- /dev/null
+    +++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
+    @@ -0,0 +1,8 @@
+    +[[!comment format=mdwn
+    + username="markusk"
+    + ip="79.243.250.79"
+    + subject="comment 2"
+    + date="2014-07-23T23:18:37Z"
+    + content="""
+    +Thank you for the info! Will add the port grep to my auth grep script as you suggested. 
+    +"""]]
+    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn
+    deleted file mode 100644
+    index 69732a7..0000000
+    --- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn
+    +++ /dev/null
+    @@ -1,46 +0,0 @@
+    -### Please describe the problem.
+    -
+    -
+    -some time ago i was using the webapp bound to a dedicated port number to get around firewall reconfig. Now after some time without using the webapp i'm using it again and when i start it with 
+    -
+    -     git-annex webapp --listen=192.168.21.12:46199
+    -
+    -it never starts but just keeps waiting forever(?) 
+    -
+    -Update:(to clarify - the following works fine but results in the "random" port "problem")
+    -
+    -    git-annex webapp --listen=192.168.21.12
+    -
+    -
+    -
+    -
+    -### What steps will reproduce the problem?
+    -
+    -
+    -git-annex webapp --listen=192.168.21.12:46199
+    -
+    -
+    -### What version of git-annex are you using? On what operating system?
+    -
+    -
+    -version 5.20140716-g8c14ba8 on debian wheezy using your pre build static tar archive. 
+    -
+    -### Please provide any additional information below.
+    -
+    -[[!format sh """
+    -# If you can, paste a complete transcript of the problem occurring here.
+    -# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+    -
+    -
+    -the log output is the following 3 lines 
+    -
+    -[2014-07-23 16:41:45 CEST] main: starting assistant version 5.20140716-g8c14ba8
+    -WebApp crashed: getAddrInfo: does not exist (Name or service not known)
+    -[2014-07-23 16:41:45 CEST] WebApp: warning WebApp crashed: getAddrInfo: does not exist (Name or service not known)
+    -
+    -
+    -
+    -# End of transcript or log.
+    -"""]]
+    -
+    -> [[done]] --[[Joey]] 
+    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
+    deleted file mode 100644
+    index 5808c56..0000000
+    --- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
+    +++ /dev/null
+    @@ -1,10 +0,0 @@
+    -[[!comment format=mdwn
+    - username="http://joeyh.name/"
+    - ip="24.159.78.125"
+    - subject="comment 1"
+    - date="2014-07-23T22:10:37Z"
+    - content="""
+    -Support for --listen with a port was removed in version 5.20140306, since it was buggy. In particular, when the webapp creates a new repository, it needs to switch to a new port to serve that repository, so specifying a single port won't work.
+    -
+    -Instead, when annex.listen or --listen specifies the address to listen on, `git annex webapp` will print out the url to use to open it, including the port it picked. This could be used in a script, or clicked on in the terminal to open a local browser when running the webapp on a remote host.
+    -"""]]
+    diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
+    deleted file mode 100644
+    index 2dd9885..0000000
+    --- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
+    +++ /dev/null
+    @@ -1,8 +0,0 @@
+    -[[!comment format=mdwn
+    - username="markusk"
+    - ip="79.243.250.79"
+    - subject="comment 2"
+    - date="2014-07-23T23:18:37Z"
+    - content="""
+    -Thank you for the info! Will add the port grep to my auth grep script as you suggested. 
+    -"""]]
+    diff --git a/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn b/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn
+    new file mode 100644
+    index 0000000..dae654d
+    --- /dev/null
+    +++ b/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn
+    @@ -0,0 +1,63 @@
+    +### What steps will reproduce the problem?
+    +[[!format sh """
+    +C:\Users\Bruno>mkdir annex
+    +
+    +C:\Users\Bruno>cd annex
+    +
+    +C:\Users\Bruno\annex>git init
+    +Initialized empty Git repository in C:/Users/Bruno/annex/.git/
+    +
+    +C:\Users\Bruno\annex>git annex init
+    +init
+    +  Detected a crippled filesystem.
+    +
+    +  Enabling direct mode.
+    +
+    +  Detected a filesystem without fifo support.

(Diff truncated)
Added a comment
diff --git a/doc/forum/Huge_differences_in_sync_times_in_different_directories_of_same_machines/comment_1_445766c0f646e9cb5b45b863ad87e85a._comment b/doc/forum/Huge_differences_in_sync_times_in_different_directories_of_same_machines/comment_1_445766c0f646e9cb5b45b863ad87e85a._comment
new file mode 100644
index 0000000..5c1ddf1
--- /dev/null
+++ b/doc/forum/Huge_differences_in_sync_times_in_different_directories_of_same_machines/comment_1_445766c0f646e9cb5b45b863ad87e85a._comment
@@ -0,0 +1,136 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 1"
+ date="2015-03-02T01:47:32Z"
+ content="""
+Ooops, the formatting got all messed up. Here it is again:
+
+I am confused by the differences in the time between updates of different
+repositories in the same machines and of the same repository in different
+machines. I am using the assistant (in all machines, 
+'git annex assitant --autostart').
+
+
+
+For instance, I have three machines synced as
+
+A <-> B <-> C
+
+and I have two directories being synced. The configuration (except for
+directory names) is the same and looks like
+
+
+
+    [annex]
+            uuid = something
+            version = 5
+            direct = true
+            autoupgrade = true
+            autocommit = true
+            startupscan = true
+    [remote \"machine_repo\"]
+            url = ssh://xxxxxx/~/repo/
+            fetch = +refs/heads/*:refs/remotes/machine_repo/*
+            annex-uuid = xxxxxxxxxxxxx
+    
+
+
+
+I modify or add a file in one of the directories in A, and it quickly
+(less than 30 seconds) appears in B and shortly after that in C.
+
+In another directory, however, more than 30 minutes can go by without C
+ever changing (even if B gets the change almost immediately). Looking at
+the logs I cannot understand what is happening. This is the case of a
+file, ```A_sentinel_file_A ```, created at 01:46.
+
+In B (where it appears almost immediately)  I can see
+
+
+    [2015-03-02 01:46:17 CET] Pusher: Syncing with 123.456.789.101_somedir 
+    To ssh://ramon@git-annex-Machine_C-ramon_22_annex.2Done.2Dway.2F/~/some-dir/
+       794df9f..ae8c3f0  git-annex -> synced/git-annex
+    Automatic merge went well; stopped before committing as requested
+    [2015-03-02 01:47:03 CET] Committer: Committing changes to git
+    [2015-03-02 01:47:03 CET] Pusher: Syncing with 123.456.789.101_somedir 
+    
+    A_sentinel_file_A
+                 18 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
+    [2015-03-02 01:47:04 CET] Transferrer: Uploaded A_sentinel_file_A
+    To ssh://ramon@git-annex-Machine_C-ramon_22_annex.2Done.2Dway.2F/~/some-dir/
+       ae8c3f0..b043335  git-annex -> synced/git-annex
+       75269bc..b61c7a5  annex/direct/master -> synced/master
+    [2015-03-02 01:47:04 CET] Committer: Committing changes to git
+    [2015-03-02 01:47:06 CET] Pusher: Syncing with 123.456.789.101_somedir 
+    To ssh://ramon@git-annex-Machine_C-ramon_22_annex.2Done.2Dway.2F/~/some-dir/
+       b043335..fc9279c  git-annex -> synced/git-annex
+
+
+
+And in C (the machine with IP 123.456.789.101, above)  I can see
+
+
+
+    [2015-03-02 01:46:13 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       593d908..794df9f  git-annex  -> Machine_B_somedir/git-annex
+       593d908..235149d  synced/git-annex -> Machine_B_somedir/synced/git-annex
+       a1596b3..75269bc  synced/master -> Machine_B_somedir/synced/master
+    [2015-03-02 01:46:17 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       a1596b3..75269bc  annex/direct/master -> Machine_B_somedir/annex/direct/master
+       794df9f..ae8c3f0  git-annex  -> Machine_B_somedir/git-annex
+       a1596b3..75269bc  master     -> Machine_B_somedir/master
+    [2015-03-02 01:46:27 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       ae8c3f0..632caa4  git-annex  -> Machine_B_somedir/git-annex
+       235149d..632caa4  synced/git-annex -> Machine_B_somedir/synced/git-annex
+    [2015-03-02 01:47:02 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       632caa4..56ac968  synced/git-annex -> Machine_B_somedir/synced/git-annex
+       75269bc..b61c7a5  synced/master -> Machine_B_somedir/synced/master
+    [2015-03-02 01:47:02 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       632caa4..b043335  git-annex  -> Machine_B_somedir/git-annex
+    [2015-03-02 01:47:07 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       75269bc..b61c7a5  annex/direct/master -> Machine_B_somedir/annex/direct/master
+       b043335..fc9279c  git-annex  -> Machine_B_somedir/git-annex
+       75269bc..b61c7a5  master     -> Machine_B_somedir/master
+    [2015-03-02 01:47:15 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       fc9279c..a4642a8  git-annex  -> Machine_B_somedir/git-annex
+       56ac968..a4642a8  synced/git-annex -> Machine_B_somedir/synced/git-annex
+    (merging synced/git-annex Machine_B_somedir/git-annex into git-annex...)
+    (recording state in git...)
+    [2015-03-02 02:17:23 CET] RemoteControl: Syncing with Machine_B_somedir 
+    From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+       a4642a8..bfaba72  git-annex  -> Machine_B_somedir/git-annex
+       a4642a8..bfaba72  synced/git-annex -> Machine_B_somedir/synced/git-annex
+       b61c7a5..29ff91e  synced/master -> Machine_B_somedir/synced/master   
+       
+
+
+Why did Machine C did not show the updated file at 01:47, which is when, I
+think, machine B pushes it there? Or at 02:17 when both machines again
+seem to talk to each other? Regardless, at 02:27 the file still was not
+there. Yes, of course, if I issue a
+
+```
+    git annex sync --content
+```
+
+then the file is shown in Machine C. But I should not need to do that.
+
+
+
+In contrast, as I said, there is another directory, with identical
+configuration, where these things do not happen and changes show
+immediately (both directories, for now, only have tiny test files).
+
+
+
+
+
+"""]]

diff --git a/doc/forum/Huge_differences_in_sync_times_in_different_directories_of_same_machines.mdwn b/doc/forum/Huge_differences_in_sync_times_in_different_directories_of_same_machines.mdwn
new file mode 100644
index 0000000..c936fbd
--- /dev/null
+++ b/doc/forum/Huge_differences_in_sync_times_in_different_directories_of_same_machines.mdwn
@@ -0,0 +1,127 @@
+I am confused by the differences in the time between updates of different
+repositories in the same machines and of the same repository in different
+machines. I am using the assistant (in all machines, 
+'git annex assitant --autostart').
+
+
+
+For instance, I have three machines synced as
+
+A <-> B <-> C
+
+and I have two directories being synced. The configuration (except for
+directory names) is the same and looks like
+
+
+```
+[annex]
+        uuid = something
+        version = 5
+        direct = true
+        autoupgrade = true
+        autocommit = true
+        startupscan = true
+[remote "machine_repo"]
+        url = ssh://xxxxxx/~/repo/
+        fetch = +refs/heads/*:refs/remotes/machine_repo/*
+        annex-uuid = xxxxxxxxxxxxx
+
+```
+
+
+I modify or add a file in one of the directories in A, and it quickly
+(less than 30 seconds) appears in B and shortly after that in C.
+
+In another directory, however, more than 30 minutes can go by without C
+ever changing (even if B gets the change almost immediately). Looking at
+the logs I cannot understand what is happening. This is the case of a
+file, ```A_sentinel_file_A ```, created at 01:46.
+
+In B (where it appears almost immediately)  I can see
+
+
+```
+[2015-03-02 01:46:17 CET] Pusher: Syncing with 123.456.789.101_somedir 
+To ssh://ramon@git-annex-Machine_C-ramon_22_annex.2Done.2Dway.2F/~/some-dir/
+   794df9f..ae8c3f0  git-annex -> synced/git-annex
+Automatic merge went well; stopped before committing as requested
+[2015-03-02 01:47:03 CET] Committer: Committing changes to git
+[2015-03-02 01:47:03 CET] Pusher: Syncing with 123.456.789.101_somedir 
+
+A_sentinel_file_A
+             18 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
+[2015-03-02 01:47:04 CET] Transferrer: Uploaded A_sentinel_file_A
+To ssh://ramon@git-annex-Machine_C-ramon_22_annex.2Done.2Dway.2F/~/some-dir/
+   ae8c3f0..b043335  git-annex -> synced/git-annex
+   75269bc..b61c7a5  annex/direct/master -> synced/master
+[2015-03-02 01:47:04 CET] Committer: Committing changes to git
+[2015-03-02 01:47:06 CET] Pusher: Syncing with 123.456.789.101_somedir 
+To ssh://ramon@git-annex-Machine_C-ramon_22_annex.2Done.2Dway.2F/~/some-dir/
+   b043335..fc9279c  git-annex -> synced/git-annex
+```
+
+
+And in C (the machine with IP 123.456.789.101, above)  I can see
+
+
+```
+[2015-03-02 01:46:13 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   593d908..794df9f  git-annex  -> Machine_B_somedir/git-annex
+   593d908..235149d  synced/git-annex -> Machine_B_somedir/synced/git-annex
+   a1596b3..75269bc  synced/master -> Machine_B_somedir/synced/master
+[2015-03-02 01:46:17 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   a1596b3..75269bc  annex/direct/master -> Machine_B_somedir/annex/direct/master
+   794df9f..ae8c3f0  git-annex  -> Machine_B_somedir/git-annex
+   a1596b3..75269bc  master     -> Machine_B_somedir/master
+[2015-03-02 01:46:27 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   ae8c3f0..632caa4  git-annex  -> Machine_B_somedir/git-annex
+   235149d..632caa4  synced/git-annex -> Machine_B_somedir/synced/git-annex
+[2015-03-02 01:47:02 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   632caa4..56ac968  synced/git-annex -> Machine_B_somedir/synced/git-annex
+   75269bc..b61c7a5  synced/master -> Machine_B_somedir/synced/master
+[2015-03-02 01:47:02 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   632caa4..b043335  git-annex  -> Machine_B_somedir/git-annex
+[2015-03-02 01:47:07 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   75269bc..b61c7a5  annex/direct/master -> Machine_B_somedir/annex/direct/master
+   b043335..fc9279c  git-annex  -> Machine_B_somedir/git-annex
+   75269bc..b61c7a5  master     -> Machine_B_somedir/master
+[2015-03-02 01:47:15 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   fc9279c..a4642a8  git-annex  -> Machine_B_somedir/git-annex
+   56ac968..a4642a8  synced/git-annex -> Machine_B_somedir/synced/git-annex
+(merging synced/git-annex Machine_B_somedir/git-annex into git-annex...)
+(recording state in git...)
+[2015-03-02 02:17:23 CET] RemoteControl: Syncing with Machine_B_somedir 
+From ssh://git-annex-Machine_B-ramon_22_annex.2Done.2Dway/~/some-dir
+   a4642a8..bfaba72  git-annex  -> Machine_B_somedir/git-annex
+   a4642a8..bfaba72  synced/git-annex -> Machine_B_somedir/synced/git-annex
+   b61c7a5..29ff91e  synced/master -> Machine_B_somedir/synced/master   
+   
+```
+
+Why did Machine C did not show the updated file at 01:47, which is when, I
+think, machine B pushes it there? Or at 02:17 when both machines again
+seem to talk to each other? Regardless, at 02:27 the file still was not
+there. Yes, of course, if I issue a
+
+```
+git annex sync --content
+```
+
+then the file is shown in Machine C. But I should not need to do that.
+
+
+
+In contrast, as I said, there is another directory, with identical
+configuration, where these things do not happen and changes show
+immediately (both directories, for now, only have tiny test files).
+
+What am I doing wrong? This is too big a difference to make sense to me.
+
+

Added a comment
diff --git a/doc/forum/How_to_emulate___34__one-way_sync__34__s_in_a_direct_repo__63__/comment_4_d899cf35801636e618e4675d91d6104a._comment b/doc/forum/How_to_emulate___34__one-way_sync__34__s_in_a_direct_repo__63__/comment_4_d899cf35801636e618e4675d91d6104a._comment
new file mode 100644
index 0000000..146156b
--- /dev/null
+++ b/doc/forum/How_to_emulate___34__one-way_sync__34__s_in_a_direct_repo__63__/comment_4_d899cf35801636e618e4675d91d6104a._comment
@@ -0,0 +1,24 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 4"
+ date="2015-03-01T23:58:19Z"
+ content="""
+But is there a way to have the changes in one node (the \"read only\") discarded when there are changes in the remote, so that the new version in the remote is propagated to the read only node?
+So I guess what I'd like is something like *update-changes-from-others.sh* (Like sync, but don't commit any local changes. Merge them like sync, don't discard) but without the merging, so discarding any changes as soon as a new version appears in the remote. 
+
+
+I've tried the ```remote.foo.annex-readonly = true``` in Android but I am not getting my intended behavior.
+
+For instance, suppose a computer and a Android device (but with direct mode, since working with assistant)
+
+- Create file in computer
+- Let it appear in Android
+- Modify in Android; this change apparently does not propagate back to the computer.
+- Modify again in computer; sometime later one gets a conflict (file.variant-xxxx and file-variant-yyyy, with the computer getting one of the conflicts as a link that points nowhere).
+
+
+Adding ```autocommit = false``` does not help either.
+
+
+"""]]

diff --git a/doc/forum/Assistant:_run_with___34__sync_--fast__34___to_automatically_use_only_available_remotes.mdwn b/doc/forum/Assistant:_run_with___34__sync_--fast__34___to_automatically_use_only_available_remotes.mdwn
new file mode 100644
index 0000000..3a6e4a7
--- /dev/null
+++ b/doc/forum/Assistant:_run_with___34__sync_--fast__34___to_automatically_use_only_available_remotes.mdwn
@@ -0,0 +1,18 @@
+I have a set of machines, call them A, B, C, I am trying to keep synced. However, all three of them do not always see all the other two (e.g., I might need a vpn tunnel up to see C from A, etc, or C is down, etc). 
+Everything works as expected (i.e., content gets from one machine to the others) if in the webapp I disable the non-reachable nodes (or, equivalently, I set annex-sync to false in .git/config). But I wonder if there is a way to have git annex not use the non-reachable remotes. Using git-annex sync --fast does not seem to do it (since all remotes I guess have the same annex-cost value).
+
+
+I understand a possible solution involves using 
+
+```
+remote.<name>.annex-cost-command
+```
+
+so that I set the cost of the non-available remote to a large value. But then, I'd need to tell the assistant to always use, by default
+
+
+```
+git-annex sync --fast --content
+```
+
+and I do not know how to make it use "--fast". 

Added a comment: Why shoul git-annex support --git-dir
diff --git a/doc/bugs/git_annex_wont_work_with_git-dir_and_work-tree/comment_2_fb75f5941d355947b3f06165825dd012._comment b/doc/bugs/git_annex_wont_work_with_git-dir_and_work-tree/comment_2_fb75f5941d355947b3f06165825dd012._comment
new file mode 100644
index 0000000..b716500
--- /dev/null
+++ b/doc/bugs/git_annex_wont_work_with_git-dir_and_work-tree/comment_2_fb75f5941d355947b3f06165825dd012._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlvmWVPaSpWJO5_rimCL0lEoJRoKOIjhHE"
+ nickname="Gioacchino"
+ subject="Why shoul git-annex support --git-dir"
+ date="2015-03-01T10:10:31Z"
+ content="""
+Hi!
+
+There are multiple use case as I explained on IRC and it is why I and probably more users need it, there are some git-annex repository that i share also with other programs like RetroShare and apache USERDIR (like http://efesto.eigenlab.org/~gioacchino/) i don't like .git directory to be shared by these programs as the file are publics but not the metadata stored on the .git ( http://efesto.eigenlab.org/~gioacchino/.git/config ) i know i can do that with other tricks like htaccess but it is application specific hack while the real solution is to keep the .git in a private place
+
+Another use case is when you are grepping or doing scripty stuff on your dir having the .git in another place allow you to do stuff without concern about what there is inside .git without using options like --exclude and similar
+
+The list of use cases can grow as they are all the one caused git to support --git-dir so for the sake of consistence and for your donors please propagate --git-dir on all git-annex components ;)
+
+P.S. I am not native english speaker so sorry if something sounds bad
+"""]]

Allow this repository to be checked out in filesystems with 255 char filename limits
diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn
new file mode 100644
index 0000000..69732a7
--- /dev/null
+++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known.mdwn
@@ -0,0 +1,46 @@
+### Please describe the problem.
+
+
+some time ago i was using the webapp bound to a dedicated port number to get around firewall reconfig. Now after some time without using the webapp i'm using it again and when i start it with 
+
+     git-annex webapp --listen=192.168.21.12:46199
+
+it never starts but just keeps waiting forever(?) 
+
+Update:(to clarify - the following works fine but results in the "random" port "problem")
+
+    git-annex webapp --listen=192.168.21.12
+
+
+
+
+### What steps will reproduce the problem?
+
+
+git-annex webapp --listen=192.168.21.12:46199
+
+
+### What version of git-annex are you using? On what operating system?
+
+
+version 5.20140716-g8c14ba8 on debian wheezy using your pre build static tar archive. 
+
+### Please provide any additional information below.
+
+[[!format sh """
+# If you can, paste a complete transcript of the problem occurring here.
+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+
+
+the log output is the following 3 lines 
+
+[2014-07-23 16:41:45 CEST] main: starting assistant version 5.20140716-g8c14ba8
+WebApp crashed: getAddrInfo: does not exist (Name or service not known)
+[2014-07-23 16:41:45 CEST] WebApp: warning WebApp crashed: getAddrInfo: does not exist (Name or service not known)
+
+
+
+# End of transcript or log.
+"""]]
+
+> [[done]] --[[Joey]] 
diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
new file mode 100644
index 0000000..5808c56
--- /dev/null
+++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="24.159.78.125"
+ subject="comment 1"
+ date="2014-07-23T22:10:37Z"
+ content="""
+Support for --listen with a port was removed in version 5.20140306, since it was buggy. In particular, when the webapp creates a new repository, it needs to switch to a new port to serve that repository, so specifying a single port won't work.
+
+Instead, when annex.listen or --listen specifies the address to listen on, `git annex webapp` will print out the url to use to open it, including the port it picked. This could be used in a script, or clicked on in the terminal to open a local browser when running the webapp on a remote host.
+"""]]
diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
new file mode 100644
index 0000000..2dd9885
--- /dev/null
+++ b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="markusk"
+ ip="79.243.250.79"
+ subject="comment 2"
+ date="2014-07-23T23:18:37Z"
+ content="""
+Thank you for the info! Will add the port grep to my auth grep script as you suggested. 
+"""]]
diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn
deleted file mode 100644
index 69732a7..0000000
--- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-### Please describe the problem.
-
-
-some time ago i was using the webapp bound to a dedicated port number to get around firewall reconfig. Now after some time without using the webapp i'm using it again and when i start it with 
-
-     git-annex webapp --listen=192.168.21.12:46199
-
-it never starts but just keeps waiting forever(?) 
-
-Update:(to clarify - the following works fine but results in the "random" port "problem")
-
-    git-annex webapp --listen=192.168.21.12
-
-
-
-
-### What steps will reproduce the problem?
-
-
-git-annex webapp --listen=192.168.21.12:46199
-
-
-### What version of git-annex are you using? On what operating system?
-
-
-version 5.20140716-g8c14ba8 on debian wheezy using your pre build static tar archive. 
-
-### Please provide any additional information below.
-
-[[!format sh """
-# If you can, paste a complete transcript of the problem occurring here.
-# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
-
-
-the log output is the following 3 lines 
-
-[2014-07-23 16:41:45 CEST] main: starting assistant version 5.20140716-g8c14ba8
-WebApp crashed: getAddrInfo: does not exist (Name or service not known)
-[2014-07-23 16:41:45 CEST] WebApp: warning WebApp crashed: getAddrInfo: does not exist (Name or service not known)
-
-
-
-# End of transcript or log.
-"""]]
-
-> [[done]] --[[Joey]] 
diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
deleted file mode 100644
index 5808c56..0000000
--- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_1_4d1b96911e3e227c7433ccea543872c1._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="24.159.78.125"
- subject="comment 1"
- date="2014-07-23T22:10:37Z"
- content="""
-Support for --listen with a port was removed in version 5.20140306, since it was buggy. In particular, when the webapp creates a new repository, it needs to switch to a new port to serve that repository, so specifying a single port won't work.
-
-Instead, when annex.listen or --listen specifies the address to listen on, `git annex webapp` will print out the url to use to open it, including the port it picked. This could be used in a script, or clicked on in the terminal to open a local browser when running the webapp on a remote host.
-"""]]
diff --git a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment b/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
deleted file mode 100644
index 2dd9885..0000000
--- a/doc/bugs/_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41_____91__2014-07-23_16:41:45_CEST__93___WebApp:_warning_WebApp_crashed:_getAddrInfo:_does_not_exist___40__Name_or_service_not_known__41__/comment_2_7be98a630e1deb655a4d1675bf622d05._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="markusk"
- ip="79.243.250.79"
- subject="comment 2"
- date="2014-07-23T23:18:37Z"
- content="""
-Thank you for the info! Will add the port grep to my auth grep script as you suggested. 
-"""]]
diff --git a/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn b/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn
new file mode 100644
index 0000000..dae654d
--- /dev/null
+++ b/doc/bugs/fatal:_unable_to_access___39__..__47__..__47__..__47.mdwn
@@ -0,0 +1,63 @@
+### What steps will reproduce the problem?
+[[!format sh """
+C:\Users\Bruno>mkdir annex
+
+C:\Users\Bruno>cd annex
+
+C:\Users\Bruno\annex>git init
+Initialized empty Git repository in C:/Users/Bruno/annex/.git/
+
+C:\Users\Bruno\annex>git annex init
+init
+  Detected a crippled filesystem.
+
+  Enabling direct mode.
+
+  Detected a filesystem without fifo support.
+
+  Disabling ssh connection caching.
+ok
+(Recording state in git...)
+
+C:\Users\Bruno\annex>echo test > test
+
+C:\Users\Bruno\annex>git annex add .
+add test (checksum...) ok
+(Recording state in git...)
+
+C:\Users\Bruno\annex>git commit -a -m added
+[master (root-commit) 2eea610] added
+ 1 file changed, 1 insertion(+)

(Diff truncated)
Added a comment
diff --git a/doc/forum/Verification/comment_3_74db3ec8b03f48912306e48b8d5f7242._comment b/doc/forum/Verification/comment_3_74db3ec8b03f48912306e48b8d5f7242._comment
new file mode 100644
index 0000000..9627072
--- /dev/null
+++ b/doc/forum/Verification/comment_3_74db3ec8b03f48912306e48b8d5f7242._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="Régis"
+ subject="comment 3"
+ date="2015-02-28T18:33:27Z"
+ content="""
+Also, I noted a difference between encrypted (gcrypt) repos and unencrypted repos. The second ones have the other icon saying that it is live messaging. The encrypted one have a standard icon.
+Is it a technical limitation that encrypted repos can not live message ? And could it be the reason why the sync is not happening itself until i manually choose \"sync\" from the menu ?
+"""]]

diff --git a/doc/forum/View_special_remote_information__63__.mdwn b/doc/forum/View_special_remote_information__63__.mdwn
new file mode 100644
index 0000000..3138204
--- /dev/null
+++ b/doc/forum/View_special_remote_information__63__.mdwn
@@ -0,0 +1 @@
+How is it possible to view the URL etc of a special remote with git annex? I checked out a git annex repository and would like to know where the files where fetched from. 

Added a comment
diff --git a/doc/bugs/Offline_editing_in_Android_removes_files_and_creates_links/comment_1_a15eb9cd1a7bcdfa4b16459ef978a019._comment b/doc/bugs/Offline_editing_in_Android_removes_files_and_creates_links/comment_1_a15eb9cd1a7bcdfa4b16459ef978a019._comment
new file mode 100644
index 0000000..236f7f0
--- /dev/null
+++ b/doc/bugs/Offline_editing_in_Android_removes_files_and_creates_links/comment_1_a15eb9cd1a7bcdfa4b16459ef978a019._comment
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 1"
+ date="2015-02-27T22:06:51Z"
+ content="""
+I can confirm the above using, in the computer 
+
+5.20150219-g52daae5 
+
+and 5.20150226-g9c72d37
+
+In the computer, files that were edited in the Android while offline, might not always disappear, but might reappear as content after first being shown as links that point nowhere. Or may remain as links that point nowhere.
+
+In the Androids files that contain links (instead of original content) continue containint the links for over 1 hour.
+
+Binary (e.g., PDFs) and plain text files do not always behave the same. Plain text files are more easily affected (whereas PDFs are back to what they should be sooner).
+
+"""]]

Added a comment
diff --git a/doc/forum/Verification/comment_2_7df45d1e20a32458791603d5b9fe3dc4._comment b/doc/forum/Verification/comment_2_7df45d1e20a32458791603d5b9fe3dc4._comment
new file mode 100644
index 0000000..c98a210
--- /dev/null
+++ b/doc/forum/Verification/comment_2_7df45d1e20a32458791603d5b9fe3dc4._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="Régis"
+ subject="comment 2"
+ date="2015-02-27T21:38:05Z"
+ content="""
+Thanks for this speedy answer !
+
+I have version 5.20150219 installed on all the clients and on the server.
+The ssh server is a gcrypt repository. Could this be the reason of the clients not being notificated of the  changes ??
+
+Also, in theory, some file on one of the repositories could get corrupted, deleted, whatever. How can I make the repo check if everything is like intended on the other repos ? 
+For example, I made a test renaming a file within the objects directory on the remote ssh server and ran git annex fchk, but it reported nothing...
+
+Many thanks again !
+"""]]

diff --git a/doc/bugs/Offline_editing_in_Android_removes_files_and_creates_links.mdwn b/doc/bugs/Offline_editing_in_Android_removes_files_and_creates_links.mdwn
new file mode 100644
index 0000000..9dd05d1
--- /dev/null
+++ b/doc/bugs/Offline_editing_in_Android_removes_files_and_creates_links.mdwn
@@ -0,0 +1,45 @@
+### Please describe the problem.
+Two androids, A and B, and a computer, C. All running git annex assistant.
+If you edit a file on A while A is offline, when A is back online and reconnects, that file will disappear from C and, in B, it will be substituted by a link
+If you create a new file on A, that file will appear as a link in B and in C
+
+
+### What steps will reproduce the problem?
+- Have A, B, and C be connected sharing some repo. Create a file, file1. Let it propagate, so file1 is on A, B, C.
+
+- Take A offline (e.g., turn wifi off).
+
+- Edit file1 in A.
+
+- Create file2 in A.
+
+- (Let those files appear in the repo in A as in
+[2015-02-27 20:55:04 CET] Committer: Adding file1
+add file1 ok
+)
+
+- Turn the wifi of A on again.
+
+- Sync A from the webapp (clik on sync now)
+
+- In B (the other android) both file1 and file2 will contain just links, not the actual content of file1 and file2.
+
+- In the computer, file1 will have disappeared and file2 will be a link that points nowhere. (The link that file2 points too, as a string, are the contents of file2 in B). 
+
+
+
+### What version of git-annex are you using? On what operating system?
+Computer: 5.20141125 
+
+Androids: 5.20150226-g9c72d37 and 5.20150224-g9dca034
+
+
+### Please provide any additional information below.
+
+[[!format sh """
+# If you can, paste a complete transcript of the problem occurring here.
+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+
+
+# End of transcript or log.
+"""]]

followu
diff --git a/doc/bugs/Git_annexed_files_symlink_are_wrong_when_submodule_is_not_in_the_same_path/comment_4_7dae2920926e7556de442952c4a318d9._comment b/doc/bugs/Git_annexed_files_symlink_are_wrong_when_submodule_is_not_in_the_same_path/comment_4_7dae2920926e7556de442952c4a318d9._comment
new file mode 100644
index 0000000..70d24cb
--- /dev/null
+++ b/doc/bugs/Git_annexed_files_symlink_are_wrong_when_submodule_is_not_in_the_same_path/comment_4_7dae2920926e7556de442952c4a318d9._comment
@@ -0,0 +1,35 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 4"""
+ date="2015-02-27T20:00:54Z"
+ content="""
+Also, git has only used gitfiles for submodules since git 1.7.8.
+
+So, repos using submodules that were cloned with an older version of git
+would use a .git directory. And, if some part of git only supports
+gitfiles, it wouldn't work with such repositories. Which would probably be
+considered a bug since git doesn't break support for existing checkouts.
+
+git-mv and git-rm man pages have a SUBMODULES section documenting that.
+Including the behavior when using git-rm to try to delete a submodule that
+uses a .git directory, instead of a gitfile:
+
+> Only submodules using a gitfile (which means they were cloned
+> with a Git version 1.7.8 or newer) will be removed from the work
+> tree, as their repository lives inside the .git directory of the
+> superproject. If a submodule (or one of those nested inside it)
+> still uses a .git directory, `git rm` will fail - no matter if forced
+> or not - to protect the submodule's history.
+
+So, I doubt that git is going to break support for .git directory (or symlink)
+in a submodule. But, using that might prevent a few things, particularly
+git-rm of a submodule.
+
+<pre>
+joey@darkstar:~/tmp/r2>git rm module
+error: the following submodule (or one of its nested submodules)
+uses a .git directory:
+    module
+(use 'rm -rf' if you really want to remove it including all of its history)
+</pre>
+"""]]

think I found a way to support submodules
diff --git a/doc/bugs/Git_annexed_files_symlink_are_wrong_when_submodule_is_not_in_the_same_path/comment_3_c63b4a86b84c1e4077ddf10858ef5761._comment b/doc/bugs/Git_annexed_files_symlink_are_wrong_when_submodule_is_not_in_the_same_path/comment_3_c63b4a86b84c1e4077ddf10858ef5761._comment
new file mode 100644
index 0000000..0f3d223
--- /dev/null
+++ b/doc/bugs/Git_annexed_files_symlink_are_wrong_when_submodule_is_not_in_the_same_path/comment_3_c63b4a86b84c1e4077ddf10858ef5761._comment
@@ -0,0 +1,34 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 3"""
+ date="2015-02-27T19:45:27Z"
+ content="""
+One way that seems to work to use submodules with git-annex:
+
+* Replace the submodule's .git file with a symlink to the location the
+  contents of the file pointed at. (Eg, ../.git/modules/$whatever)
+* Unset core.worktree in the submodule's .git/config, which will
+  normally be set by git when checking out a submodule.
+
+With this configuration, git seems to work ok (although it's hard to tell
+if there might be some code path that requires .git to be a file and not a
+directory.. seems unlikely though!). And, git-annex works fine, because
+it uses paths relative to the .git symlink, so
+".git/annex/objects/xx/yy/sha/sha" is in the symlink target like usual.
+
+Converting .git to a symlink also means that the same repo that is used
+as a submodule can be moved to a different "mount point" in the parent
+repo, or used standalone, and the git-annex object links in it will
+continue to work.
+
+Looking at the git code, it would be a problem if a code path called
+read_gitfile without also checking is_git_directory or similar. Auditing
+the code, I have found a lot of places that are careful to check both
+possibilities, and none that are a problem with a .git directory;
+although I don't understand all the git code so not 100% sure.
+
+Since a submodule will have core.worktree set, git-annex
+could cheaply check that with nearly no overhead as a first pass to
+detect a submodule, and then do whatever might be appropriate to support
+submodules -- such as replacing .git with a symlink.
+"""]]

respinse
diff --git a/doc/install/OSX/comment_11_8d53c477b441ab0984257b21003c7cc7._comment b/doc/install/OSX/comment_11_8d53c477b441ab0984257b21003c7cc7._comment
new file mode 100644
index 0000000..1045a44
--- /dev/null
+++ b/doc/install/OSX/comment_11_8d53c477b441ab0984257b21003c7cc7._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""Re: Is the Mavericks build still beeing updated?"""
+ date="2015-02-27T18:57:51Z"
+ content="""
+The Yosemite build linked above has been reported to work on Mavericks too,
+and is being updated. There is no separate Mavericks build anymore.
+
+There were some old mavericks builds floating around the downloads site; 
+I've removed those and symlinked the mavericks directory to the yosimite
+directory.
+"""]]

response
diff --git a/doc/forum/Verification/comment_1_d56818a8f5b3a94ecf5159c76f24768c._comment b/doc/forum/Verification/comment_1_d56818a8f5b3a94ecf5159c76f24768c._comment
new file mode 100644
index 0000000..d9684d9
--- /dev/null
+++ b/doc/forum/Verification/comment_1_d56818a8f5b3a94ecf5159c76f24768c._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2015-02-27T18:51:52Z"
+ content="""
+Well, it depends on how big the files are, but taking a few hours to sync
+might indicate that your repositories are not immediately notifying
+one-another of changes. It might be falling back to polling every half
+an hour for new changes.
+
+You could fix that by setting up XMPP, or better, by installing git-annex
+5.20140421 or newer on the SSH server; then the clients would immediately
+notify when there are changes.
+
+You can find out if all files are present on the server by running
+`git annex find --not --in $server` on one of the clients. Any files
+it prints out have not been stored in the server.
+"""]]

sync: As well as the synced/git-annex push, attempt a git-annex:git-annex push, as long as the remote branch is an ancestor of the local branch, to better support bare git repos.
See my comment in the bug report for analysis; basically this is safe
because it's a non-forced push, so won't lose history. Even if it was a
forced push or somehow races, things will eventually become consistent and
no git-annex branch info will be lost.
(This used to be done, but it forgot to do it since version 4.20130909.)
diff --git a/Command/Sync.hs b/Command/Sync.hs
index 16932b8..b69b9a0 100644
--- a/Command/Sync.hs
+++ b/Command/Sync.hs
@@ -315,7 +315,9 @@ pushBranch remote branch g = tryIO (directpush g) `after` syncpush g
 		, refspec branch
 		]
 	directpush = Git.Command.runQuiet $ pushparams
-		[Git.fromRef $ Git.Ref.base $ fromDirectBranch branch]
+		[ Git.fromRef $ Git.Ref.base $ Annex.Branch.name
+		, Git.fromRef $ Git.Ref.base $ fromDirectBranch branch
+		]
 	pushparams branches =
 		[ Param "push"
 		, Param $ Remote.name remote
diff --git a/debian/changelog b/debian/changelog
index 55fed8d..758a8d8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -15,6 +15,10 @@ git-annex (5.2015022) UNRELEASED; urgency=medium
     https://ghc.haskell.org/trac/ghc/ticket/7695
     This prevents localization from working, but git-annex
     is not localized anyway.
+  * sync: As well as the synced/git-annex push, attempt a
+    git-annex:git-annex push, as long as the remote branch
+    is an ancestor of the local branch, to better support bare git repos.
+    (This used to be done, but it forgot to do it since version 4.20130909.)
 
  -- Joey Hess <id@joeyh.name>  Thu, 19 Feb 2015 14:16:03 -0400
 
diff --git a/doc/bugs/git.kitenet.net__47__downloads_has_wrong_git-annex_branch.mdwn b/doc/bugs/git.kitenet.net__47__downloads_has_wrong_git-annex_branch.mdwn
index c48c520..ee1875e 100644
--- a/doc/bugs/git.kitenet.net__47__downloads_has_wrong_git-annex_branch.mdwn
+++ b/doc/bugs/git.kitenet.net__47__downloads_has_wrong_git-annex_branch.mdwn
@@ -41,3 +41,18 @@ requête HTTP transmise, en attente de la réponse… 200 OK
 5.20141125 on debian jessie.
 
 Sorry for the noise in that other bug report! I really thought it was the same issue .... --[[anarcat]]
+
+> The repository has a synced/git-annex that is newer, so it will be
+> available if using git-annex sync.
+> 
+> It looks like git-annex sync has not pushed git-annex:git-annex since
+> [[!commit 6cdac3a003b6850fd96a60d94320d084d8651096]]. I think that commit might
+> have removed that accidentially; I can't tell for sure. 
+> 
+> Adding git-annex:git-annex
+> to the direct push would avoid this problem. Long as that push is not
+> forced, there's no risk of overwriting other changes to the git-annex
+> branch. (Even if it does get overwritten, there's no data loss; things
+> will get into sync eventually.)
+> 
+> So, I've added back the git-annex:git-annex push. [[done]] --[[Joey]]

diff --git a/doc/forum/Verification.mdwn b/doc/forum/Verification.mdwn
new file mode 100644
index 0000000..cbce0b4
--- /dev/null
+++ b/doc/forum/Verification.mdwn
@@ -0,0 +1,9 @@
+Hi,
+
+I have a simple Client Mac <> FullBackup on remote SSH <> Client On Mac setup which seems to work great.
+
+I have 2 questions :
+- Whenever a new file is created or changed it can takes a few hours until the second client gets the file. Is this normal ?
+- How Can I make sure, that all the files are on the FullBackup ?
+
+Many thank !

Added a comment
diff --git a/doc/tips/publishing_your_files_to_the_public/comment_4_37405f20da790141187e9f780c999448._comment b/doc/tips/publishing_your_files_to_the_public/comment_4_37405f20da790141187e9f780c999448._comment
new file mode 100644
index 0000000..2855c3f
--- /dev/null
+++ b/doc/tips/publishing_your_files_to_the_public/comment_4_37405f20da790141187e9f780c999448._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="BojanNikolic"
+ subject="comment 4"
+ date="2015-02-27T09:55:15Z"
+ content="""
+Many thanks. The command line I ended up using is:
+
+    fname=\"2015/01/04/myfile.pdf\" ;  git annex copy --to pubweb $fname; key=`git annex lookupkey \"$fname\"`;  git annex examinekey $key --format 'https://www.myweb.com/d/${hashdirlower}${key}/${key}\n'
+
+to publish selected documents in my git-annex repository onto the web via a rsync special remote on a conventional http server. 
+"""]]

Added a comment
diff --git a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_ab8a227df71c70c05074b50dcb798acd._comment b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_ab8a227df71c70c05074b50dcb798acd._comment
new file mode 100644
index 0000000..9edb912
--- /dev/null
+++ b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_ab8a227df71c70c05074b50dcb798acd._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 1"
+ date="2015-02-27T01:43:42Z"
+ content="""
+I had the same problem, also with Android 4.1.1 (an Asus TF201). This is what I did:
+
+- Download version for Android 4.3 and 4.4 (autobuilds) and install that one over the previous.
+- Add the remote, which worked just fine.
+- Reinstall the version for Android 4.1 (autobuilds)
+
+And things seem to be working (things are syncing to the Android)
+
+"""]]

removed
diff --git a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_cee328805cf6d8258135e31fe0670b15._comment b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_cee328805cf6d8258135e31fe0670b15._comment
deleted file mode 100644
index 5e184a7..0000000
--- a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_cee328805cf6d8258135e31fe0670b15._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
- nickname="Ramon"
- subject="comment 1"
- date="2015-02-27T01:41:14Z"
- content="""
-
-
-I had the same problem, also with Android 4.1.1 (an Asus TF201). This is what I did:
-
-- Download version for Android 4.2 to 4.4 and install that one over the previous.
-- Add the remote, which worked just fine.
-- Reinstall the version for Android 4.1
-
-And things seem to be working (things are syncing to the Android)
-
-"""]]

Added a comment
diff --git a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_cee328805cf6d8258135e31fe0670b15._comment b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_cee328805cf6d8258135e31fe0670b15._comment
new file mode 100644
index 0000000..5e184a7
--- /dev/null
+++ b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_cee328805cf6d8258135e31fe0670b15._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 1"
+ date="2015-02-27T01:41:14Z"
+ content="""
+
+
+I had the same problem, also with Android 4.1.1 (an Asus TF201). This is what I did:
+
+- Download version for Android 4.2 to 4.4 and install that one over the previous.
+- Add the remote, which worked just fine.
+- Reinstall the version for Android 4.1
+
+And things seem to be working (things are syncing to the Android)
+
+"""]]

removed
diff --git a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_e20acdc8e7f9e946bee0aeba2f2c580a._comment b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_e20acdc8e7f9e946bee0aeba2f2c580a._comment
deleted file mode 100644
index 91bfcc6..0000000
--- a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_e20acdc8e7f9e946bee0aeba2f2c580a._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
- nickname="Ramon"
- subject="comment 1"
- date="2015-02-27T01:38:36Z"
- content="""
-I had the same problem, also with Android 4.1.1 (an Asus TF201). This is what I did:
-
-- Download version for Android 4.2 to 4.4 and install that one over the previous.
-- Access the server (and thus, get the keys generated, etc).
-- Reinstall the version for Android 4.1
-
-And things seem to be working.
-"""]]

Added a comment
diff --git a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_e20acdc8e7f9e946bee0aeba2f2c580a._comment b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_e20acdc8e7f9e946bee0aeba2f2c580a._comment
new file mode 100644
index 0000000..91bfcc6
--- /dev/null
+++ b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device/comment_1_e20acdc8e7f9e946bee0aeba2f2c580a._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 1"
+ date="2015-02-27T01:38:36Z"
+ content="""
+I had the same problem, also with Android 4.1.1 (an Asus TF201). This is what I did:
+
+- Download version for Android 4.2 to 4.4 and install that one over the previous.
+- Access the server (and thus, get the keys generated, etc).
+- Reinstall the version for Android 4.1
+
+And things seem to be working.
+"""]]

removed
diff --git a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_2_41d9d040b0e23862616bff97d5b0b7de._comment b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_2_41d9d040b0e23862616bff97d5b0b7de._comment
deleted file mode 100644
index 9ca35c6..0000000
--- a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_2_41d9d040b0e23862616bff97d5b0b7de._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
- nickname="Ramon"
- subject="comment 2"
- date="2015-02-26T18:47:47Z"
- content="""
-And I forgot to add, sorry, that when after a long time (say, another 20 minutes) something gets downloaded to the Android device, it is the reference, not the actual file. And this I also do not understand at all. So it seems I need to issue the 
-
-git annex sync --content
-
-by hand. But I thought I do not need to. 
-
-I think I am definitely misusing or misunderstanding git annex ;-( 
-"""]]

removed
diff --git a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_1_89ddfcc56eedfb5bedae256ba386e5ca._comment b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_1_89ddfcc56eedfb5bedae256ba386e5ca._comment
deleted file mode 100644
index 83cdb6e..0000000
--- a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_1_89ddfcc56eedfb5bedae256ba386e5ca._comment
+++ /dev/null
@@ -1,29 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
- nickname="Ramon"
- subject="comment 1"
- date="2015-02-26T18:21:03Z"
- content="""
-Update: So after about 16 hours, route 2 seems to be completed. But then, the behavior is something I do not understand:
-- I create a file in the computer and the log there shows it gets created and added in the repo in the computer
-
-[2015-02-26 18:33:40 CET] Committer: Adding A
-add A-test/A ok
-add A-test/A ok
-[2015-02-26 18:33:40 CET] Committer: Committing changes to git
-(Recording state in git...)
-(Recording state in git...)
-
-
-- But the android is spinning for minutes and minutes without doing anything. I restart it, and it takes it more than 20' to finish the scan, and then its start syncing, but to no avail:
-
-(scanning...) [2015-02-26 18:37:15 CET] Watcher: Performing startup scan
-(started...) 
-[2015-02-26 18:58:05 CET] main: Syncing with xxx.xxx.xxx.xxx__home_someone_somewhere 
-
-(yes, I can connect from the android to the computer using ssh from another app ---connect bot)
-
-
-So I think maybe I am misuing git annex somehow?
-
-"""]]

Added a comment
diff --git a/doc/todo/server-level_daemon__63__/comment_3_60c5030a21c28b79f634f0655bc6c05d._comment b/doc/todo/server-level_daemon__63__/comment_3_60c5030a21c28b79f634f0655bc6c05d._comment
new file mode 100644
index 0000000..974cc0a
--- /dev/null
+++ b/doc/todo/server-level_daemon__63__/comment_3_60c5030a21c28b79f634f0655bc6c05d._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="https://id.koumbit.net/anarcat"
+ subject="comment 3"
+ date="2015-02-26T23:53:32Z"
+ content="""
+why would that be a bad idea anyways?
+"""]]

Added a comment
diff --git a/doc/todo/server-level_daemon__63__/comment_2_4a5ccb0e772352adbf20940c010895a5._comment b/doc/todo/server-level_daemon__63__/comment_2_4a5ccb0e772352adbf20940c010895a5._comment
new file mode 100644
index 0000000..cc6ab98
--- /dev/null
+++ b/doc/todo/server-level_daemon__63__/comment_2_4a5ccb0e772352adbf20940c010895a5._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://id.koumbit.net/anarcat"
+ subject="comment 2"
+ date="2015-02-26T23:52:52Z"
+ content="""
+because this is a server without a generic \"user account\". there are multiple admins with each their own account, and i'd like to have git-annex run as its own account. and yes, probably under systemd, but under wheezy, under init.d.
+
+i would avoid @reboot cron jobs because systemd can't restart it if they fail.
+"""]]

i think i figured out some weird bug... hopefully? :)
diff --git a/doc/bugs/git.kitenet.net__47__downloads_has_wrong_git-annex_branch.mdwn b/doc/bugs/git.kitenet.net__47__downloads_has_wrong_git-annex_branch.mdwn
new file mode 100644
index 0000000..c48c520
--- /dev/null
+++ b/doc/bugs/git.kitenet.net__47__downloads_has_wrong_git-annex_branch.mdwn
@@ -0,0 +1,43 @@
+### Please describe the problem.
+
+This is coming from [[main repo not available on downloads.kitenet.net]], probably was the original issue, but since I already create a duplicate there, I won't assume anything (sorry about that!).
+
+### What steps will reproduce the problem?
+
+I am not sure. I know that I had an external drive with a clone of *some* repo related to `downloads.kitenet.net`. Doing a `git annex get` wouldn't work:
+
+<pre>
+anarcat@marcos:current$ cd /media/anarcat/VHS/downloads.kitenet.net/git-annex/linux/current/
+anarcat@marcos:current$ git annex get git-annex-standalone-amd64.tar.gz
+get git-annex-standalone-amd64.tar.gz (not available)
+  Try making some of these repositories available:
+        840760dc-08f0-11e2-8c61-576b7e66acfd -- main repo
+        d7fa24ad-d104-4064-ad10-1078a4436e72 -- joey@elephant:~/lib/downloads
+failed
+git-annex: get: 1 failed
+anarcat@marcos:current$ git remote -v
+origin  git://git.kitenet.net/downloads.git (fetch)
+origin  git://git.kitenet.net/downloads.git (push)
+</pre>
+
+it turns out i somehow managed to checkout from `git://git.kitenet.net/downloads.git`. I don't know where I got this URL from, may it was back when I created that other bug report and the git URL wasn't explicitely mentionned on http://downloads.kitenet.net/ It turns out that there's a `git-annex` branch there that diverged from the "real" one, and is lacking tracking information. changing the remote here fixed the problem:
+
+<pre>
+anarcat@marcos:current$ git remote set-url origin http://downloads.kitenet.net/.git/
+anarcat@marcos:current$ git remote update
+Récupération de origin
+Depuis http://downloads.kitenet.net/
+ + e9febdc...1a80292 git-annex  -> origin/git-annex  (mise à jour forcée)
+anarcat@marcos:current$ git annex get git-annex-standalone-amd64.tar.gz
+get git-annex-standalone-amd64.tar.gz (from origin...) --2015-02-26 18:40:47--  http://downloads.kitenet.net/.git//annex/objects/Pm/8Z/SHA256E-s45589010--f82e2f600763b0f25a45a96ddf7ed68f26c67122e22cf8833d4c2473475bbce2.tar.gz/SHA256E-s45589010--f82e2f600763b0f25a45a96ddf7ed68f26c67122e22cf8833d4c2473475bbce2.tar.gz
+Résolution de downloads.kitenet.net (downloads.kitenet.net)… 66.228.36.95, 2600:3c03::f03c:91ff:fe73:b0d2
+Connexion à downloads.kitenet.net (downloads.kitenet.net)|66.228.36.95|:80… connecté.
+requête HTTP transmise, en attente de la réponse… 200 OK
+[...]
+</pre>
+
+### What version of git-annex are you using? On what operating system?
+
+5.20141125 on debian jessie.
+
+Sorry for the noise in that other bug report! I really thought it was the same issue .... --[[anarcat]]

Added a comment
diff --git a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_3_c5c655ee3ec2501c1c3c60fd83574914._comment b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_3_c5c655ee3ec2501c1c3c60fd83574914._comment
new file mode 100644
index 0000000..42cab60
--- /dev/null
+++ b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_3_c5c655ee3ec2501c1c3c60fd83574914._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 3"
+ date="2015-02-26T23:44:40Z"
+ content="""
+Please forgive the noise. I think I've been doing something very, very stupid. Sorry. I'd delete the whole thread if I could
+"""]]

Added a comment
diff --git a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_2_41d9d040b0e23862616bff97d5b0b7de._comment b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_2_41d9d040b0e23862616bff97d5b0b7de._comment
new file mode 100644
index 0000000..9ca35c6
--- /dev/null
+++ b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_2_41d9d040b0e23862616bff97d5b0b7de._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 2"
+ date="2015-02-26T18:47:47Z"
+ content="""
+And I forgot to add, sorry, that when after a long time (say, another 20 minutes) something gets downloaded to the Android device, it is the reference, not the actual file. And this I also do not understand at all. So it seems I need to issue the 
+
+git annex sync --content
+
+by hand. But I thought I do not need to. 
+
+I think I am definitely misusing or misunderstanding git annex ;-( 
+"""]]

Added a comment
diff --git a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_1_89ddfcc56eedfb5bedae256ba386e5ca._comment b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_1_89ddfcc56eedfb5bedae256ba386e5ca._comment
new file mode 100644
index 0000000..83cdb6e
--- /dev/null
+++ b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories/comment_1_89ddfcc56eedfb5bedae256ba386e5ca._comment
@@ -0,0 +1,29 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 1"
+ date="2015-02-26T18:21:03Z"
+ content="""
+Update: So after about 16 hours, route 2 seems to be completed. But then, the behavior is something I do not understand:
+- I create a file in the computer and the log there shows it gets created and added in the repo in the computer
+
+[2015-02-26 18:33:40 CET] Committer: Adding A
+add A-test/A ok
+add A-test/A ok
+[2015-02-26 18:33:40 CET] Committer: Committing changes to git
+(Recording state in git...)
+(Recording state in git...)
+
+
+- But the android is spinning for minutes and minutes without doing anything. I restart it, and it takes it more than 20' to finish the scan, and then its start syncing, but to no avail:
+
+(scanning...) [2015-02-26 18:37:15 CET] Watcher: Performing startup scan
+(started...) 
+[2015-02-26 18:58:05 CET] main: Syncing with xxx.xxx.xxx.xxx__home_someone_somewhere 
+
+(yes, I can connect from the android to the computer using ssh from another app ---connect bot)
+
+
+So I think maybe I am misuing git annex somehow?
+
+"""]]

Added a comment: Re: comment1
diff --git a/doc/forum/Repository_backup/comment_2_e362221ef3d13bd417b2b6b0c51738a8._comment b/doc/forum/Repository_backup/comment_2_e362221ef3d13bd417b2b6b0c51738a8._comment
new file mode 100644
index 0000000..e84be7f
--- /dev/null
+++ b/doc/forum/Repository_backup/comment_2_e362221ef3d13bd417b2b6b0c51738a8._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnb2yfWzJ2lYQw1UTm6XVZ4y8qashNagZA"
+ nickname="Daniel"
+ subject="Re: comment1"
+ date="2015-02-26T12:48:56Z"
+ content="""
+Thanks for the tip!
+
+Yeah, I get that special remotes aren't meant for this, and backing up a bare (i.e. contentless) git repo somewhere else is pretty trivial. My only point was that it'd be nice to have a single unified offsite backup--if you backup the content to S3, say, and the git repo itself to Github, you now have two points of failure and, in some sense, twice the management hassle. (I now need both my Amazon and Github credentials to restore, for example.) 
+
+This seems somewhat undesirable in a backup system. 
+
+An easy way around this may be for me to just have a wrapper script that first backs up content to the special remote and then copies the .git repo (minus the objects) to the same place. So it's something I can easily enough work around. 
+"""]]

Added a comment: Is the Mavericks build still beeing updated?
diff --git a/doc/install/OSX/comment_10_e5172de344908f85ce6cf976e3c3806b._comment b/doc/install/OSX/comment_10_e5172de344908f85ce6cf976e3c3806b._comment
new file mode 100644
index 0000000..99669d2
--- /dev/null
+++ b/doc/install/OSX/comment_10_e5172de344908f85ce6cf976e3c3806b._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk7iPiqWr3BVPLWEDvJhSSvcOqheLEbLNo"
+ nickname="Dirk"
+ subject="Is the Mavericks build still beeing updated?"
+ date="2015-02-26T12:22:51Z"
+ content="""
+I am still using Mac OS 10.9. Recently downloading a new git-annex version showed that the Mavericks build is still based on 5.20141104, while the Yosemite is 5.20150219. I am wondering if this is a misstake or if it is time for me to move on to Yosemite? ;-)
+
+
+"""]]

diff --git a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories.mdwn b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories.mdwn
index 7c541b7..ca2b390 100644
--- a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories.mdwn
+++ b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories.mdwn
@@ -5,7 +5,10 @@ I've used two different routes: 1. start the assistant in the Android in a direc
 Details follow:
 
 
-1. In one Android, I had already transmitted all the files (nothing git-related; just the directory). So I placed that directory under /sdcard/annex, and started the assistant. I did not add any other repository (i.e., the computer was not added). After more than 12 hours, it is not done. The webapp in the Android shows "Adding blablabla".
+Route 1. 
+=========
+
+In one Android, I had already transmitted all the files (nothing git-related; just the directory). So I placed that directory under /sdcard/annex, and started the assistant. I did not add any other repository (i.e., the computer was not added). After more than 12 hours, it is not done. The webapp in the Android shows "Adding blablabla".
 
 If I compare the sizes of directories between the computer and the android with du I get:
 
@@ -24,7 +27,10 @@ Android (using adb shell):~ du -H -d 1
 Over the last six hours it seems the size in the Android is getting closer and closer to that in the computer, but it seems is never quite getting there. And then, I think after this is completed (if ever), I'll need to sync with the computer.
 
 
-2. In the other Android I started the assistant, and added the computer as the other repository. Let them sync. Initially I was getting the TransferScanner crashed problem in
+Route 2. 
+========
+
+In the other Android I started the assistant, and added the computer as the other repository. Let them sync. Initially I was getting the TransferScanner crashed problem in
 [Android version does not sync](http://git-annex.branchable.com/forum/Android_version_does_not_sync/). So I issued the git-annex sync as suggested. Things started syncing. But again, after more than 12 hourse, it is not done and I have no idea how long I'd have to wait. In this case, git-annex seems to be placing stuff in ./git, as the things downloaded are actually links. A du shows this:
 
 392304  ./.git
@@ -33,9 +39,12 @@ Over the last six hours it seems the size in the Android is getting closer and c
 
 -------
 
-So I think I am experiencing two different problems:
+I think I am experiencing two different problems:
 
-A. git is just taking forever (route 1.) in the Android. There are not network issues possible there, since that Android is not downloading/syncing anything with anyone. Interestingly, in case this is of any use, from adb shell a top shows: 
+Problem 1. 
+==========
+
+git is just taking forever (route 1.) in the Android. There are not network issues possible there, since that Android is not downloading/syncing anything with anyone. Interestingly, in case this is of any use, from adb shell a top shows: 
 
 User 27%, System 16%, IOW 1%, IRQ 0%
 User 318 + Nice 28 + Sys 199 + Idle 674 + IOW 20 + IRQ 0 + SIRQ 0 = 1239
@@ -44,7 +53,10 @@ User 318 + Nice 28 + Sys 199 + Idle 674 + IOW 20 + IRQ 0 + SIRQ 0 = 1239
 and the git-annex process taking between 3% to 15% CPU.
 
 
-B. git + network issues in route 2.  But I doubt this is mainly a network problem. As a comparison, using syncthing I was able to initially sync (i.e., download to the android device) the complete set of files in about four hours and then checking for changes in the Android takes syncthing about 1 to 3 minutes. I've also repeated this using a private seafile server (seafile server running in the computer); downloading all files takes about the same (about four hours), and then checking for changes against the seafile server takes between 45 minutes and an hour. For comparison, a top also shows that git-annex is taking between 2 and 15% CPU.
+Problem 2
+==========
+
+git + network issues in route 2.  But I doubt this is mainly a network problem. As a comparison, using syncthing I was able to initially sync (i.e., download to the android device) the complete set of files in about four hours and then checking for changes in the Android takes syncthing about 1 to 3 minutes. I've also repeated this using a private seafile server (seafile server running in the computer); downloading all files takes about the same (about four hours), and then checking for changes against the seafile server takes between 45 minutes and an hour. For comparison, a top also shows that git-annex is taking between 2 and 15% CPU.
 
 
 So I am wondering if I am making some silly mistake here, or maybe this is not the intended use case (because of number or size of files for an Android device). Of course, computer-to-computer things work just fine. It is the Android part which is not working. 

diff --git a/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories.mdwn b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories.mdwn
new file mode 100644
index 0000000..7c541b7
--- /dev/null
+++ b/doc/forum/Android:_unusably_slow_with_moderately_sized_repositories.mdwn
@@ -0,0 +1,55 @@
+I am trying to sync a repository between a computer and two Android devices. The data in the directory of files (i.e., not the .git directory) takes about 7.4 GB and there are about 10000 files and directories in total (as reported by find . | wc -l) of which 7000 are files (as reported by find - -type f | wc -l).
+
+I've used two different routes: 1. start the assistant in the Android in a directory with all the files: 2. start the assistant in the Android in an empty dir and sync with the git-annex repository in the computer. None are working. I am using, in the androids, v. 5.20150224-g9dca034 and in the computer the latest Debian version (5.20141125).
+
+Details follow:
+
+
+1. In one Android, I had already transmitted all the files (nothing git-related; just the directory). So I placed that directory under /sdcard/annex, and started the assistant. I did not add any other repository (i.e., the computer was not added). After more than 12 hours, it is not done. The webapp in the Android shows "Adding blablabla".
+
+If I compare the sizes of directories between the computer and the android with du I get:
+
+Computer:~  du -H -d 1
+215624  ./.git
+7710564 ./directory
+7926192 .
+
+
+Android (using adb shell):~ du -H -d 1
+7681744 ./directory
+35388   ./.git
+7717136 .
+
+
+Over the last six hours it seems the size in the Android is getting closer and closer to that in the computer, but it seems is never quite getting there. And then, I think after this is completed (if ever), I'll need to sync with the computer.
+
+
+2. In the other Android I started the assistant, and added the computer as the other repository. Let them sync. Initially I was getting the TransferScanner crashed problem in
+[Android version does not sync](http://git-annex.branchable.com/forum/Android_version_does_not_sync/). So I issued the git-annex sync as suggested. Things started syncing. But again, after more than 12 hourse, it is not done and I have no idea how long I'd have to wait. In this case, git-annex seems to be placing stuff in ./git, as the things downloaded are actually links. A du shows this:
+
+392304  ./.git
+82464   ./directory
+474776  .
+
+-------
+
+So I think I am experiencing two different problems:
+
+A. git is just taking forever (route 1.) in the Android. There are not network issues possible there, since that Android is not downloading/syncing anything with anyone. Interestingly, in case this is of any use, from adb shell a top shows: 
+
+User 27%, System 16%, IOW 1%, IRQ 0%
+User 318 + Nice 28 + Sys 199 + Idle 674 + IOW 20 + IRQ 0 + SIRQ 0 = 1239
+
+
+and the git-annex process taking between 3% to 15% CPU.
+
+
+B. git + network issues in route 2.  But I doubt this is mainly a network problem. As a comparison, using syncthing I was able to initially sync (i.e., download to the android device) the complete set of files in about four hours and then checking for changes in the Android takes syncthing about 1 to 3 minutes. I've also repeated this using a private seafile server (seafile server running in the computer); downloading all files takes about the same (about four hours), and then checking for changes against the seafile server takes between 45 minutes and an hour. For comparison, a top also shows that git-annex is taking between 2 and 15% CPU.
+
+
+So I am wondering if I am making some silly mistake here, or maybe this is not the intended use case (because of number or size of files for an Android device). Of course, computer-to-computer things work just fine. It is the Android part which is not working. 
+
+
+
+
+

Added a comment
diff --git a/doc/forum/Android:_git_annex_sync_--content_not_run_in_all_repos__63__/comment_2_5b1565955ed88554e5ef4a00c0f4a754._comment b/doc/forum/Android:_git_annex_sync_--content_not_run_in_all_repos__63__/comment_2_5b1565955ed88554e5ef4a00c0f4a754._comment
new file mode 100644
index 0000000..056c785
--- /dev/null
+++ b/doc/forum/Android:_git_annex_sync_--content_not_run_in_all_repos__63__/comment_2_5b1565955ed88554e5ef4a00c0f4a754._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnbPKLjBONawBd74MKJZo05juCqdsP1jAU"
+ nickname="Ramon"
+ subject="comment 2"
+ date="2015-02-26T08:08:37Z"
+ content="""
+Thanks. I'll check as suggested if it happens again. Since switching between repos in android was complicated, I've started all over putting everything in a single repo (the default one).
+"""]]

comment
diff --git a/doc/forum/Using_standard_groups_and_sync_to_preserve_history:_--all_not_recognised/comment_1_c3dd239d4b5b372229f2cec42a8a6eb4._comment b/doc/forum/Using_standard_groups_and_sync_to_preserve_history:_--all_not_recognised/comment_1_c3dd239d4b5b372229f2cec42a8a6eb4._comment
new file mode 100644
index 0000000..935b46a
--- /dev/null
+++ b/doc/forum/Using_standard_groups_and_sync_to_preserve_history:_--all_not_recognised/comment_1_c3dd239d4b5b372229f2cec42a8a6eb4._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2015-02-25T19:28:03Z"
+ content="""
+It looks like the documentation is wrong; `git annex sync` has never
+supported `--all` or `--unused`. I've fixed the documentation. If you do
+need this, please file a todo item so I can remember to try to implement
+it. Should be doable, but not trivially so.
+"""]]

Linux standalone: Set LOCPATH=/dev/null to work around https://ghc.haskell.org/trac/ghc/ticket/7695
This prevents localization from working, but git-annex is not localized anyway.
diff --git a/debian/changelog b/debian/changelog
index eb6a294..55fed8d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,10 @@ git-annex (5.2015022) UNRELEASED; urgency=medium
     since in this case there must be staged changes in the index
     (if there is anything to unannex), and the unannex code path
     needs to run with a clean index.
+  * Linux standalone: Set LOCPATH=/dev/null to work around
+    https://ghc.haskell.org/trac/ghc/ticket/7695
+    This prevents localization from working, but git-annex
+    is not localized anyway.
 
  -- Joey Hess <id@joeyh.name>  Thu, 19 Feb 2015 14:16:03 -0400
 
diff --git a/doc/bugs/git-annex_on_NAS_eats_all_memory.mdwn b/doc/bugs/git-annex_on_NAS_eats_all_memory.mdwn
index 080291f..c177722 100644
--- a/doc/bugs/git-annex_on_NAS_eats_all_memory.mdwn
+++ b/doc/bugs/git-annex_on_NAS_eats_all_memory.mdwn
@@ -33,3 +33,7 @@ and the current bundle on the NAS
 
 # End of transcript or log.
 """]]
+
+> Went ahead with setting LOCPATH=/dev/null in runshell, so it won't
+> run into whatever problem with the locales is causing it to hit this GHC
+> bug. [[done]] (I hope) --[[Joey]]
diff --git a/standalone/linux/skel/runshell b/standalone/linux/skel/runshell
index 886ffd7..f6db1da 100755
--- a/standalone/linux/skel/runshell
+++ b/standalone/linux/skel/runshell
@@ -74,6 +74,10 @@ export ORIG_GCONV_PATH
 GCONV_PATH=$base/$(cat $base/gconvdir)
 export GCONV_PATH
 
+# workaround for https://ghc.haskell.org/trac/ghc/ticket/7695
+LOCPATH=/dev/null
+export LOCPATH
+
 ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH"
 export ORIG_GIT_EXEC_PATH
 GIT_EXEC_PATH=$base/git-core

add a link
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
index 8cd0340..9cc198b 100644
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -1392,9 +1392,12 @@ no equivilant to `--in`.
 
 When a repository is in one of the standard predefined groups, like "backup"
 and "client", setting its preferred content to "standard" will use a
-built-in preferred content expression developed for that group. Or,
-setting its preferred content to "groupwanted" will make it use whatever
-groupwanted expression you set for the group.
+built-in preferred content expression developed for that group. 
+See <https://git-annex.branchable.com/preferred_content/standard_groups/>
+
+If you have set a groupwanted expression for a group, it will be used
+when a repository in the group has its preferred content set to
+"groupwanted".
 
 # SCHEDULED JOBS
 

comment
diff --git a/doc/tips/publishing_your_files_to_the_public/comment_3_2f5045629e40e8d881725876190c7846._comment b/doc/tips/publishing_your_files_to_the_public/comment_3_2f5045629e40e8d881725876190c7846._comment
new file mode 100644
index 0000000..c76d3a3
--- /dev/null
+++ b/doc/tips/publishing_your_files_to_the_public/comment_3_2f5045629e40e8d881725876190c7846._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 3"""
+ date="2015-02-25T19:44:40Z"
+ content="""
+You can look up the hash directories for a key using:
+
+git annex examinekey $key --format '${hashdirlower}\n'
+"""]]

fix doc problem noticed in a forum question
diff --git a/doc/preferred_content.mdwn b/doc/preferred_content.mdwn
index 31e6149..557305a 100644
--- a/doc/preferred_content.mdwn
+++ b/doc/preferred_content.mdwn
@@ -179,11 +179,6 @@ content expression won't match anything.
 
 So when is `unused` useful in a preferred content expression?
 
-Using `git annex sync --content --all` will ensure that all keys, including
-unused ones, are examined and the preferred content expressions followed.
-Similarly, `git annex sync --content --unused` will only look at the unused
-keys.
-
 The git-annex assistant periodically scans for unused files, and
 moves them to some repository whose preferred content expression
 matches "unused". (Or, if annex.expireunused is set, it may just delete

comment
diff --git a/doc/forum/Android:_git_annex_sync_--content_not_run_in_all_repos__63__/comment_1_aff6a984ab076433fbce32bacae6660e._comment b/doc/forum/Android:_git_annex_sync_--content_not_run_in_all_repos__63__/comment_1_aff6a984ab076433fbce32bacae6660e._comment
new file mode 100644
index 0000000..8d62f0b
--- /dev/null
+++ b/doc/forum/Android:_git_annex_sync_--content_not_run_in_all_repos__63__/comment_1_aff6a984ab076433fbce32bacae6660e._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2015-02-25T19:22:17Z"
+ content="""
+It sounds like the android device is sending the files to repository
+B-computer, but it is not updating its repository until you run
+`git annex sync` manually.
+
+Are you sure that the git-annex assistant is actively managing the `B-computer`
+repository? I would `tail -f .git/annex/daemon.log` in that repository 
+when making a change to B-android, and see what it does.
+"""]]

retitle
diff --git a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device.mdwn b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device.mdwn
index 366d419..ce9f323 100644
--- a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device.mdwn
+++ b/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device.mdwn
@@ -1,3 +1,5 @@
+[[!meta title="adding remote server using ssh on an Android 4.1 device"]]
+
 ### Please describe the problem.
 
 Unable to add remote server using ssh on a 4.1 device.

response
diff --git a/doc/forum/Newbie_question_for_a_simple_task/comment_2_a9d18e6fb1c6b064f50467c23bc89d2e._comment b/doc/forum/Newbie_question_for_a_simple_task/comment_2_a9d18e6fb1c6b064f50467c23bc89d2e._comment
new file mode 100644
index 0000000..8002298
--- /dev/null
+++ b/doc/forum/Newbie_question_for_a_simple_task/comment_2_a9d18e6fb1c6b064f50467c23bc89d2e._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 2"""
+ date="2015-02-25T19:18:58Z"
+ content="""
+Since you have a ssh server, it's better to avoid jabber. Install
+git-annex 5.20140405 or newer on the server, and the clients will
+use it to communicate with one-another.
+"""]]

followup
diff --git a/doc/preferred_content/standard_groups/comment_5_9288dfe6b89885fe287db27cf941be64._comment b/doc/preferred_content/standard_groups/comment_5_9288dfe6b89885fe287db27cf941be64._comment
new file mode 100644
index 0000000..50a7cb1
--- /dev/null
+++ b/doc/preferred_content/standard_groups/comment_5_9288dfe6b89885fe287db27cf941be64._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 5"""
+ date="2015-02-25T19:17:10Z"
+ content="""
+@Áron, there is not a way to do that, unless you move the "old"
+files to a different directory, or something like that.
+"""]]

wording
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
index d9d515d..8cd0340 100644
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -699,7 +699,7 @@ subdirectories).
 
 * `whereis [path ...]`
 
-  Displays a information about where the contents of files are located.
+  Displays information about where the contents of files are located.
 
 * `list [path ...]`
 

close; git annex list is the command you seek
diff --git a/doc/bugs/make_whereis_output_more_concise.mdwn b/doc/bugs/make_whereis_output_more_concise.mdwn
index 3135e09..bfc82fb 100644
--- a/doc/bugs/make_whereis_output_more_concise.mdwn
+++ b/doc/bugs/make_whereis_output_more_concise.mdwn
@@ -52,3 +52,9 @@ git-annex:
         500 http://neuro.debian.net/debian-devel/ jessie/main amd64 Packages
         100 /var/lib/dpkg/status
 """]]
+
+> See `git annex list`, which comes right after `whereis` in the
+> man page, and is described as "similar to whereis but a more compact
+> display".
+>
+> [[done]] --[[Joey]]